我有一个这样的词典列表:
l = [{"integer":"1"},{"integer":"2"},{"integer":"3"},{"integer":"4"}]
我想做类似以下的事情,以便将作为“整数”键值对的每个数字都返回为整数:
l = [{"integer":"1"},{"integer":"2"},{"integer":"3"},{"integer":"4"}]
r = map(lambda x: x["integer"]=int(x["integer"]), l)
print r
#[{"integer":1},{"integer":2},{"integer":3},{"integer":4}]
但这会导致错误:
SyntaxError: lambda cannot contain assignment
有人知道用python做到这一点的干净方法吗?最好是使用地图或类似工具的单线飞机?
答案 0 :(得分:2)
使用列表理解功能
您将遍历列表中的字典,并以x
的形式返回它们,然后在新列表中插入包含所需键和返回值整数的新字典
r = [{'integer': int(x['integer'])} for x in l]
答案 1 :(得分:2)
您应该只使用循环:
l = [{"integer":"1"},{"integer":"2"},{"integer":"3"},{"integer":"4"}]
for d in l:
d["integer"] = int(d["integer"])
print(l)
#[{'integer': 1}, {'integer': 2}, {'integer': 3}, {'integer': 4}]
但是,这里有一种应该适合您的衬套:
l = [{"integer":"1"},{"integer":"2"},{"integer":"3"},{"integer":"4"}]
[d.update({"integer": int(d["integer"])}) for d in l]
print(l)
#[{'integer': 1}, {'integer': 2}, {'integer': 3}, {'integer': 4}]
请注意,dict.update()
返回None
,因此,如果您将列表理解的输出分配给变量,则它将是包含所有None
的列表。
print([d.update({"integer": int(d["integer"])}) for d in l])
#[None, None, None, None]
答案 2 :(得分:1)
以下内容可以一行完成:
r = [{'integer':int(x['integer'])} for x in l]
print(r)
# [{'integer': 1}, {'integer': 2}, {'integer': 3}, {'integer': 4}]
这利用列表理解中的dict理解。
答案 3 :(得分:1)
<img>
第二个循环仅循环一个键集,因此用克盐来进行两个循环:)
答案 4 :(得分:0)
我的一个朋友在聊天中提供了很棒的解决方案:
>>> listOfDict = [{1:1338}, {1:1338}, {1:1338}]
>>> y = 1337
>>> value = 1
>>> map(lambda x: x.update({value: y}), listOfDict)
[None, None, None]
>>> listOfDict
[{1: 1337}, {1: 1337}, {1: 1337}]