Python 列表理解 : adding unique elements into list?

标签 python list python-2.7 list-comprehension

我正在尝试编写更简单的代码来将唯一元素添加到 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/

相关文章:

python - 如何检查用户是否登录

list - 如何附加到方案中的列表?

python - 如何使用python从服务器读取本地PC中的文件

正则表达式匹配水平空白

python - 如何调用名称与数字分隔的函数?从 t1 到 t20 调用函数的示例 - Python?

python - DistutilsOptionError : must supply either home or prefix/exec-prefix -- not both

python - 如何在 python 之外使用 Vowpal Wabbit 模型

python - 如何在 Python 中导入 caffe 模块?

python - Python 中的实例类型

python - python 中的编号列表