我试图用Python创建一个唯一的对象列表,但是失败了。不管我用的是列表还是集合,它似乎不起作用。当我打印列表/集合时,我注意到列表中有几个不唯一的对象。我意识到这是因为有些物体在单词开头有一个“空格”。我环顾四周,认为使用··lstrip('')·会有助于我的事业,但遗憾的是没有
最奇怪的是“唯一对象的数目”是正确的,但最后创建的唯一对象列表却是错误的。有谁能指出我哪里出了问题吗?在
我感兴趣的列是“Object”,唯一列表应该包含猫头鹰,猫,狐狸,牛,山羊,狗,蚂蚁,水牛,狮子和老虎。在
样本数据:
Key ID Name Code State Object
01 NULL NULL NULL NULL Athletics, Light,Netball
02 NULL NULL NULL NULL BMX Track, Gridiron, Oval
05 NULL NULL NULL NULL Dog park, Cricket, Soccer
10 NULL NULL NULL NULL Netball, Oval, Softball
21 NULL NULL NULL NULL Seat, Playground, Ping Pong Table
13 NULL NULL NULL NULL Bench, Bike Rack, Seat
我的工作代码如下:
^{pr2}$我在这最后得到的是复制品,包括2只狐狸,还缺少一些独特的条目。当然,这只是一个虚拟数据,但我希望我能清楚地解释到底发生了什么。在
更新1: 我已经更新了脚本,它工作正常,但另一个问题出现了。我已经用我正在处理的真实数据更新了专栏。未添加到最终列表中的唯一项包括:
Gridiron
Cricket
Ping Pong Table
Softball
更新2:
我恢复了原来的“错误”脚本,因为它现在可以正常工作了。我正在处理的csv文件有问题。在
谢谢
^{} 不是就地方法,它返回剥离字符串。您需要将其分配回
object
-假设Python2.7+(或3.1+),一种更快的方法是使用}。示例-
^{pr2}$set
,也许{请注意,这不会保留任何顺序,因为
set
不是有序的。如果顺序很重要,可以使用set
来存储已经看到的值。示例-另外,我建议您不要使用
object
作为变量名,因为它是内置类的名称(由所有其他类扩展)。在另外,似乎有些字符串的末尾有空格,所以最好使用}而不是{}。具有集合理解的
.strip()
或{strip
示例-一个固定的理解力对你很有帮助。在
首先,让我们使用上下文管理器删除打开的文件:
好吧,让我们回顾一下我们在那里做了什么。我们使用上下文管理器打开了文件,因此文件将自动关闭。然后我们用csv.reader并循环通过第一行。在
这里是比较棘手的地方-我们通过迭代csv中的列表来创建一个集合,然后迭代这些列表的内容。更详细的方法:
^{pr2}$这可以实现几乎相同的功能,可能是以更容易理解的格式实现的。另外,请注意,我使用-1来切片到csv中的最后一列。在
像这样编辑代码:
剥离将删除右侧和左边。还有将对象指定为新对象
^{pr2}$相关问题 更多 >
编程相关推荐