我正在尝试编写更简单的代码来将唯一元素添加到 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 是否还有另一种方法可以做到这一点,或者那是否是最好的方法
最佳答案
all_items
在列表推导过程中不会不断被覆盖,因此您一直在空列表中寻找东西。
我会这样做:
data = [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 1, 2, 3, 4,]
items = []
_ = [items.append(d) for d in data if d not in items]
print(items)
我得到:
[1, 2, 3, 4, 5, 6]
但无论如何,还有更有效的方法可以做到这一点。
关于Python 列表理解 : adding unique elements into list?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37221209/