不在列表中 - 列表理解

时间:2015-04-20 00:09:33

标签: python list for-loop list-comprehension

如何在列表推导中添加条件?例如:

例如:

[dict if dict not in THIS.LIST for dict in tempList]

1 个答案:

答案 0 :(得分:4)

你订单错了,把if移到最后。

[dict for dict in tempList if dict not in THIS.LIST ]

使用你的方法python需要一个else:

[dict if dict not in THIS.LIST else whatever for dict in tempList]

如果你想引用你正在创建的实际列表使用for循环,如果这些项是可以清除的,你可以使用一个集来检查该元素是否已经被0(1)查找看到但是如果你有然后,你将无法直接使用dict集:

res = [] 
for dct in temp_list:
    if dct not in res:
        res.append(dct)

或者使用列表comp的类似方法,从列表的开头到当前索引进行检查:

print([dct for ind, dct in enumerate(temp_list) if dct not in temp_list[:ind]])

如果您只想删除重复的词组,我们可以使用dict.items

temp_list = [ {1:2},{1:2}]
print([dict(items) for items in set(tuple(dct.items()) for dct in temp_list) ])

或使用OrderedDict保持订单:

from collections import OrderedDict
temp_list = [ {1:2},{1:2}]

print(list(OrderedDict(((tuple(dct.items()),dct) for dct in temp_list)).values()))

或者再次使用正常循环:

temp_list = [ {1:2},{1:2}]
seen = set()
out = []
for dct in temp_list:
    tup = tuple(dct.items())
    if tup not in seen:
        out.append(dct)
        seen.add(tup)
print(out)