Python中唯一的对象列表无法正常工作

Python中唯一的对象列表无法正常工作,第1张

概述我试图使用 Python创建一个唯一的对象列表,我失败了.无论我使用列表还是集合都没关系,它似乎不起作用.当我打印列表/集时,我注意到列表中有几个非唯一对象.我意识到情况就是这样,因为其中一些对象在单词的开头有一个“空格”.我环顾四周,想到使用·lstrip(”)将有助于我的事业,但遗憾的是它没有. 最奇怪的是“唯一对象的数量”是正确的,但最后创建的唯一对象列表是错误的.任何人都可以指出我哪里出错 我试图使用 Python创建一个唯一的对象列表,我失败了.无论我使用列表还是集合都没关系,它似乎不起作用.当我打印列表/集时,我注意到列表中有几个非唯一对象.我意识到情况就是这样,因为其中一些对象在单词的开头有一个“空格”.我环顾四周,想到使用·lstrip(”)将有助于我的事业,但遗憾的是它没有.

最奇怪的是“唯一对象的数量”是正确的,但最后创建的唯一对象列表是错误的.任何人都可以指出我哪里出错了?

我感兴趣的专栏是’对象’,唯一的列表应该包含猫头鹰,猫,狐狸,牛,山羊,狗,蚂蚁,水牛,狮子和老虎.

样本数据:

Key    ID    name    Code    State    Object01     NulL  NulL   NulL    NulL      Athletics,light,Netball02     NulL  NulL   NulL    NulL      BMX Track,GrIDiron,oval05     NulL  NulL   NulL    NulL      Dog park,Cricket,Soccer10     NulL  NulL   NulL    NulL      Netball,oval,Softball21     NulL  NulL   NulL    NulL      Seat,Playground,Ping Pong table13     NulL  NulL   NulL    NulL      Bench,Bike Rack,Seat

我的工作代码如下:

import csvfOpen1=open('C:\Data.csv')uniqueList=csv.writer(open('C:\UniqueList.csv','wb'))Master=csv.reader(fOpen1)Master.next()unique=[]for row in Master:    for item in row[5].split(','):        item.strip(' ')        if item not in unique:            unique.append(item)uniqueList.writerow(unique)

我最后得到的是重复,包括2只狐狸,也缺少一些独特的条目.当然这只是虚拟数据,但我希望我能清楚地解释发生了什么.

UPDATE1:
我已经更新了脚本,它可以正常工作但是又出现了另一个问题.我已经使用我正在使用的真实数据更新了该列.未添加到最终列表的唯一项包括:

GrIDironCricketPing Pong tableSoftball

UPDATE2:

我已经恢复到原来的’错误’脚本,因为它现在可以正常工作了.我正在处理的csv文件有问题.

谢谢

解决方法 str.lstrip(' ')不是就地方法,它返回剥离的字符串.你需要将它分配回对象 –

object = object.lstrip(' ')

假设Python 2.7(或3.1),更快的方法是使用set,也许设置理解.示例 –

unique = {obj.lstrip() for row in Master for obj in row[5].split(',')}uniqueList.writerow(List(unique))

请注意,这不会保留任何订单,因为订单不是订购的.如果订单很重要,您可以使用一个集来存储已经看到的值.示例 –

unique=[]seen_set = set()for row in Master:    for obj in row[5].split(','):        obj = obj.lstrip(' ')        if obj not in seen_set:            unique.append(obj)            seen_set.add(obj)

另外,我想建议您不要将object用作变量名,因为它是内置类的名称(由所有其他类扩展).

此外,似乎最后有一些带有空格的字符串,因此最好使用.strip()或.strip(”)而不是.lstrip(”).具有集合理解的条带示例 –

unique = {obj.strip() for row in Master for obj in row[5].split(',')}uniqueList.writerow(List(unique))
总结

以上是内存溢出为你收集整理的Python中唯一的对象列表无法正常工作全部内容,希望文章能够帮你解决Python中唯一的对象列表无法正常工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存