У меня есть эта проблема в моем словаре У меня есть этот список:
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"
}
]
Спасибо!!
Если ключи фиксированы, вы можете создать элемент dict для каждого элемента вашего списка и добавить его в исходный список dicts. Что-то вроде следующего сделает это.
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, вы можете использовать оператор обновления словаря (|
) в понимании списка:
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])
Не могли бы вы обновить вопрос своими усилиями?