我有以下字典:
dict = {
'field1': ('foo','bar'),
'field2': ('spam',''),
'field3': ['apples', 'oranges']
}
,我想将值写在列表中,但前提是非空:
list = ['foo', 'bar', 'apples', 'oranges']
我可以使用dict.values()吗?如何检查元组的第二个元素不为空?
答案 0 :(得分:2)
您可以使用列表理解:
dic = {
'field1': ('foo','bar'),
'field2': ('spam',''),
'field3': ['apples', 'oranges']
}
new_result = [i for b in dic.values() for i in b if all(b)]
输出:
['foo', 'bar', 'apples', 'oranges']
答案 1 :(得分:1)
import itertools
dict_ = {
'field1': ('foo','bar'),
'field2': ('spam',''),
'field3': ['apples', 'oranges']
}
list_ = list(itertools.chain(*(lists for lists in dict_.values() if all(lists))))
print(list_)
# ['foo', 'bar', 'apples', 'oranges']
答案 2 :(得分:-1)
使用map
进行列表理解,然后使用平面列表来匹配所需的输出:
from itertools import chain
d = {
'field1': ('foo','bar'),
'field2': ('spam',''),
'field3': ['apples', 'oranges']
}
print(list(chain.from_iterable([v for v in d.values() if all(map(lambda x: any(x), v))])))
# ['foo', 'bar', 'apples', 'oranges']
注意:您不应将字典称为dict
,因为它掩盖了内置dict
。