簡體   English   中英

Python:如何遍歷詞典列表並將每個詞典作為值添加到具有唯一鍵的新詞典中-無需重復

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM