Python:如何修改DICT列表中的特定(键、值)对?

Python:如何修改DICT列表中的特定(键、值)对?,python,list,python-2.7,dictionary,in-place,Python,List,Python 2.7,Dictionary,In Place,我有: 我需要用2乘以所有的a键。所以我会: l = [{"a": 2}, {"a": 4}, {"a": 10}, {"a": 11}] 我可以这样做: l = [{'a': 4}, {'a': 8}, {'a': 20}, {'a': 22}] 但是很难看 应该有很好的pythonicone-liner。这是更新字典并返回列表的一行代码。但是,如果字典没有a键,它将引发KeyError。并且,所有字典都会更新,直到出现异常。我希望这会有所帮助,但代码可读性很重要,所以在for循环中简单地

我有:

我需要用2乘以所有的a键。所以我会:

l = [{"a": 2}, {"a": 4}, {"a": 10}, {"a": 11}]
我可以这样做:

l = [{'a': 4}, {'a': 8}, {'a': 20}, {'a': 22}]
但是很难看


应该有很好的pythonicone-liner。

这是更新字典并返回列表的一行代码。但是,如果字典没有
a
键,它将引发
KeyError
。并且,所有字典都会更新,直到出现异常。我希望这会有所帮助,但代码可读性很重要,所以在for循环中简单地更新字典不会花费太多

for i in l:
    i.update({"a": 2 * i["a"]})

这还考虑到是否实际存在一个键
a

l = [{k:v*2} for d in l for k, v in d.items()]


l:i['a']*=2的
有什么问题?
l.update((a,b*2)对于l.items()中的a,b有什么问题?
?@marounnaroun我试过这个<代码>属性错误:“列表”对象没有属性“更新”
@viakondratiuk我没有注意到
l
是一个列表。然后改用
l[i]
并运行
i
@ViacheslavKondratiuk是否有更好或更快的方法来更新dict列表?如果我使用的dict的键与
“a”不同,它将不起作用
@viakondratiuk-如果您有不同的键,这并不重要。如果不重复这样的列表,则会导致
d
成为副本,因此修改它不会对原始列表产生任何影响?不,您将获得列表中的实际词典。这里没有隐含副本。
l = [{k:v*2} for d in l for k, v in d.items()]
for d in l:
  if 'a' in d:
    d['a'] *= 2
for d in l:
  try:
    d['a'] *= 2
  except KeyError:
    # No key `a`
    pass