【发布时间】:2016-09-10 07:29:34
【问题描述】:
我正在尝试编写更简单的代码来将唯一元素添加到 python 列表中。我有一个包含字典列表的数据集,我正在尝试遍历字典中的列表
为什么这不起作用?它是添加所有项目,包括重复项,而不是添加唯一项目。
unique_items = []
unique_items = [item for d in data for item in d['items'] if item not in unique_items]
对比较长的有效形式:
unique_items = []
for d in data:
for item in d['items']:
if (item not in unique_items):
unique_items.append(item)
有没有办法使用列表理解来完成这项工作,还是我坚持使用双 for 循环?我想保留这个订单。
这是字典列表:
[{"items":["apple", "banana"]}, {"items":["banana", "strawberry"]}, {"items":["blueberry", "kiwi", "apple"]}]
输出应该是 ["apple", "banana", "strawberry", "blueberry", "kiwi"]
我注意到有人在另一个帖子中提出了类似的问题:Python list comprehension, with unique items,但我想知道是否有其他方法可以在没有 OrderedDict 的情况下做到这一点,或者这是否是最好的方法
【问题讨论】:
-
请提供更多信息:您的字典列表对任何提供帮助的人都非常有用。
-
更好地使用一套,它会为你删除所有重复项
-
您要保留订单吗?
-
是的,订购很重要
-
在这种情况下,另一个问题的回答是最简单的方法。如果你真的想要替代品,请查看OrderedSet recipe。
标签: python list python-2.7 list-comprehension