通过列表更新字典
update dictionnary through a list
我的字典里有这个问题
我有这个列表:
l=['a','b','c']
所以我想将它附加到我的词典列表中
d=[{
"type": "text",
"title": "",
"value": ""
}]
但是根据我的第一个列表的长度,它会在 'd'
中自动创建另一个字典
我的预期输出:
d=[{
"type": "text",
"title": "a",
"value": "/a"
},
{
"type": "text",
"title": "b",
"value": "/b"
},
{
"type": "text",
"title": "c",
"value": "/c"
}
]
如果键是固定的,您可以为列表中的每个项目创建一个字典项,并将其附加到您的初始字典列表中。像下面这样的东西就可以了。
l=['a','b','c']
d=[{
"type": "text",
"title": "",
"value": ""
}]
for item in l:
dict_item={"type": "text", "title": item, "value": f"/{item}"}
d.append(dict_item)
输出:
[{'type': 'text', 'title': '', 'value': ''},
{'type': 'text', 'title': 'a', 'value': '/a'},
{'type': 'text', 'title': 'b', 'value': '/b'},
{'type': 'text', 'title': 'c', 'value': '/c'}]
l=['a','b','c']
template = {
"type": "text",
"title": "",
"value": ""
}
d = []
for v in l:
template["title"] = v
template["value"] = "/" + v
d.append(dict(template))
事实上,在最后一行中,您不能只追加 template
,因为它会作为引用追加。在附加之前,您必须从模板创建另一个字典。
如果你使用 python ≥ 3.9 你可以在列表理解中使用 dictionary update operator (|
):
out = [d[0]|{'title': x, 'value': f'/{x}'} for x in l]
输出:
[{'type': 'text', 'title': 'a', 'value': '/a'},
{'type': 'text', 'title': 'b', 'value': '/b'},
{'type': 'text', 'title': 'c', 'value': '/c'}]
你可以有一个在线解决方案
l = ['a','b','c']
d = []
d = d.append([{"type": type(val), "title": val, "value": "/"+val} for val in l])
我的字典里有这个问题 我有这个列表:
l=['a','b','c']
所以我想将它附加到我的词典列表中
d=[{
"type": "text",
"title": "",
"value": ""
}]
但是根据我的第一个列表的长度,它会在 'd'
中自动创建另一个字典我的预期输出:
d=[{
"type": "text",
"title": "a",
"value": "/a"
},
{
"type": "text",
"title": "b",
"value": "/b"
},
{
"type": "text",
"title": "c",
"value": "/c"
}
]
如果键是固定的,您可以为列表中的每个项目创建一个字典项,并将其附加到您的初始字典列表中。像下面这样的东西就可以了。
l=['a','b','c']
d=[{
"type": "text",
"title": "",
"value": ""
}]
for item in l:
dict_item={"type": "text", "title": item, "value": f"/{item}"}
d.append(dict_item)
输出:
[{'type': 'text', 'title': '', 'value': ''},
{'type': 'text', 'title': 'a', 'value': '/a'},
{'type': 'text', 'title': 'b', 'value': '/b'},
{'type': 'text', 'title': 'c', 'value': '/c'}]
l=['a','b','c']
template = {
"type": "text",
"title": "",
"value": ""
}
d = []
for v in l:
template["title"] = v
template["value"] = "/" + v
d.append(dict(template))
事实上,在最后一行中,您不能只追加 template
,因为它会作为引用追加。在附加之前,您必须从模板创建另一个字典。
如果你使用 python ≥ 3.9 你可以在列表理解中使用 dictionary update operator (|
):
out = [d[0]|{'title': x, 'value': f'/{x}'} for x in l]
输出:
[{'type': 'text', 'title': 'a', 'value': '/a'},
{'type': 'text', 'title': 'b', 'value': '/b'},
{'type': 'text', 'title': 'c', 'value': '/c'}]
你可以有一个在线解决方案
l = ['a','b','c']
d = []
d = d.append([{"type": type(val), "title": val, "value": "/"+val} for val in l])