我有:
l = [{"a": 2}, {"a": 4}, {"a": 10}, {"a": 11}]
我需要乘以2所有" a"字谜键。所以我会:
l = [{'a': 4}, {'a': 8}, {'a': 20}, {'a': 22}]
我可以通过这样的代码来实现:
for i in l:
i.update({"a": 2 * i["a"]})
但它很难看。
应该有漂亮的Pythonic单线。
答案 0 :(得分:1)
这是一个更新词典并返回列表的班轮代码。但是,如果词典没有a
键,则会引发KeyError
。并且,所有字典都会更新,直到发生异常。我希望它有所帮助,但代码可读性很重要,所以简单地在for循环中更新字典不会花费太多。
>>> l = [{"a": 2}, {"a": 4}, {"a": 10}, {"a": 11}]
>>> map(lambda x:(x,x.__setitem__("a",x["a"]*2))[0],l)
[{'a': 4}, {'a': 8}, {'a': 20}, {'a': 22}]
答案 1 :(得分:0)
l = [{k:v*2} for d in l for k, v in d.items()]
答案 2 :(得分:0)
这也会考虑是否确实存在密钥a
。
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