如何在列表推导中添加条件?例如:
例如:
[dict if dict not in THIS.LIST for dict in tempList]
答案 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)