[英]Add new key to list of dictionaries with the values from a different dictionaries if matched with value of one key in each dictionary in a list
[英]Python: How to iterate over a list of dictionaries and add each dictionary as value to a new dictionary with a unique key - no repeats
列出字典。 我想向每個字典添加密鑰,並將它們全部附加到一個字典。 我該如何做而又不會重復輸入相同的新字典?
我嘗試了這段代碼:
# a_list is a list of dictionaries
# category_name is a string
def make_dict(a_list, category_name=None):
a_dict = {}
for item in a_list:
for i in range(0, len(a_list)):
a_dict.setdefault(category_name + str(i+1), item)
return a_dict
但是,當它創建一個新名稱時,列表中的第一個對象將重復該列表中的對象總數。
{
"Open Port 1": {
"LocalAddress": "::",
"LocalPort": 58448,
"RemoteAddress": "::",
"RemotePort": 0,
"State": 100
},
"Open Port 2": {
"LocalAddress": "::",
"LocalPort": 58448,
"RemoteAddress": "::",
"RemotePort": 0,
"State": 100
},
"Open Port 3": {
"LocalAddress": "::",
"LocalPort": 58448,
"RemoteAddress": "::",
"RemotePort": 0,
"State": 100
}, ... etc
關於如何解決此問題的任何想法?
使用您發布的代碼-您將獲得與每個下一個字典重新分配的相同密鑰"Open Port 1"
,因為計數器i
不會增加:
i = 0
for item in a_list:
a_dict.setdefault(category_name + str(i+1), item)
return a_dict
正確的方法是:
i = 0
for item in a_list:
a_dict.setdefault(category_name + str(i+1), item)
i += 1
return a_dict
但是 ,在您的簡單情況下,您可以僅使用dict理解:
a_dict = {category_name + str(i): d for i, d in enumerate(a_list, 1)}
是的,馬上就解決了。
for item in a_list:
a_dict[(category_name + str(i))] = item
i += 1
return a_dict
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.