Python3列表表达式

时间:2017-05-10 16:03:57

标签: python python-3.x list-comprehension

想象一下我在python中有这个词典:

dict = {'arr': [{'prop1': 'foo'}, {'prop1': 'bar'}]}

我想将arr中所有项目的'prop1'值更改为'foobar',我可以这样:

for item in dict['arr']:
    item['prop1'] = 'foobar'

但我想知道是否有办法使用列表表达式来执行此操作。

1 个答案:

答案 0 :(得分:3)

您可以,但只有在每一步都替换整个字典时才能使用

dict['arr'] = [
    {k: 'foobar' if k == 'prop1' else v for k, v in d.items()} 
    for d in dict['arr']]

这假设您在这些词典中有其他键。如果你不这样做,只需用这一个密钥生成新的词典:

dict['arr'] = [{'prop1': 'foobar'} for _ in dict['arr']]

就个人而言,如果你所做的只是在字典中更新一个键值对,那么只需坚持原来的for循环。