迭代列表中的字典 - Python

时间:2014-08-04 12:09:33

标签: python loops dictionary nested iteration

类似于我的上一个问题:是否存在单行/ Pythonic(前者并不一定意味着后者,我知道)编写以下嵌套for循环的方法?

some_list = # list of dictionaries
for i in some_list:
    for j in i['some_key']:
        if j is in another_list:
            i['another_key'] = True

我已经尝试了

import itertools
for i,j in itertools.product(some_list,i):
    if j is in another_list:
        i['another_key'] = True

但在转让之前,我已经获得了参考资料。错误,这是有道理的,我想。有什么建议?谢谢!

1 个答案:

答案 0 :(得分:0)

这不是一个单行,但要实现你想要整齐清晰地做的事情:

for i in some_list:
    i['another_key'] = any(j in another_list for j in i['some_key'])

或者,您可以防止i['some_key']不在场:

for i in some_list:
    i['another_key'] = any(j in another_list for j in i.get('some_key', []))

或反对i['some_key']不能用例如:。

进行迭代
try:
    i['another_key'] = any(j in another_list for j in i['some_key'])
except TypeError:
    # whatever you want to do instead

另一方面,如果事实证明你的字典没有合适的密钥或价值不可迭代,你可能更愿意直接找到它!

我不知道您正在玩的数据代表什么,因此无法提出建议,但更好的变量名称可能会有所帮助。