簡體   English   中英

當原始字典的值為列表時創建字典列表

[英]Create list of dictionaries when values of original dictionary are lists

我有一本字典,其中每個鍵的值都是一個列表。 我想從列表中為字典中的每個鍵及其對應的元素值提取一個鍵值對,然后將各個字典存儲在一個新列表中。

所以,如果我有一個像下面這樣的簡單字典:

my_dict = {'Folder': ['2021-03-12_020000', '2021-03-12_020000', '2021-03-12_020000'],
           'Filename': ['2021-03-12_020000-frame79.jpg', '2021-03-12_020000-frame1.jpg', '2021-03- 
                       12_020000-frame39.jpg'],  
           'Labeler': ['Labeler 2', 'Labeler 2', 'Labeler 1']}

我想要的 output 列表將是一個字典列表,其中每個字典都有來自 my_dict 的鍵以及來自 my_dict 中原始值列表的相應值:

final_list = [{'Folder':'2021-03-12_020000', 'Filename': '2021-03-12_020000-frame79.jpg', 'Labeler': 'Labeler 2'},
            {'Folder':'2021-03-12_020000', 'Filename': '2021-03-12_020000-frame1.jpg', 'Labeler': 'Labeler 2'},
            {'Folder':'2021-03-12_020000', 'Filename': '2021-03-12_020000-frame39.jpg', 'Labeler': 'Labeler 1'}]

對於動態鍵和值:

my_dict = {'Folder': ['2021-03-12_020000', '2021-03-12_020000', '2021-03-12_020000'],
           'Filename': ['2021-03-12_020000-frame79.jpg', '2021-03-12_020000-frame1.jpg', '2021-03- 12_020000-frame39.jpg'],  
           'Labeler': ['Labeler 2', 'Labeler 2', 'Labeler 1']}

new_dict = {}
for key in my_dict:
    for idx, value in enumerate(my_dict[key]):
        if idx not in new_dict:
            new_dict[idx] = [(key,value)]
        else:
            new_dict[idx].append((key,value))
new_list = []
for key,value in new_dict.items():
    new_list.append(dict(value))

print(new_list)

output

[{'Folder': '2021-03-12_020000', 'Filename': '2021-03-12_020000-frame79.jpg', 'Labeler': 'Labeler 2'}, {'Folder': '2021-03-12_020000', 'Filename': '2021-03-12_020000-frame1.jpg', 'Labeler': 'Labeler 2'}, {'Folder': '2021-03-12_020000', 'Filename': '2021-03- 12_020000-frame39.jpg', 'Labeler': 'Labeler 1'}]

您可以使用zip來完成任務:

my_dict = {
    "Folder": ["2021-03-12_020000", "2021-03-12_020000", "2021-03-12_020000"],
    "Filename": [
        "2021-03-12_020000-frame79.jpg",
        "2021-03-12_020000-frame1.jpg",
        "2021-03-12_020000-frame39.jpg",
    ],
    "Labeler": ["Labeler 2", "Labeler 2", "Labeler 1"],
}

final_list = [
    {"Folder": a, "Filename": b, "Labeler": c}
    for a, b, c in zip(
        my_dict["Folder"], my_dict["Filename"], my_dict["Labeler"]
    )
]

print(final_list)

印刷:

[
    {
        "Folder": "2021-03-12_020000",
        "Filename": "2021-03-12_020000-frame79.jpg",
        "Labeler": "Labeler 2",
    },
    {
        "Folder": "2021-03-12_020000",
        "Filename": "2021-03-12_020000-frame1.jpg",
        "Labeler": "Labeler 2",
    },
    {
        "Folder": "2021-03-12_020000",
        "Filename": "2021-03-12_020000-frame39.jpg",
        "Labeler": "Labeler 1",
    },
]

這是假設所有項目都是相互關聯的代碼。

my_dict = {'Folder': ['2021-03-12_020000', '2021-03-12_020000', '2021-03-12_020000'],
           'Filename': ['2021-03-12_020000-frame79.jpg', '2021-03-12_020000-frame1.jpg', '2021-03- 12_020000-frame39.jpg'],  
           'Labeler': ['Labeler 2', 'Labeler 2', 'Labeler 1']}

result_dict = []

for i, (folder, filename, labler) in enumerate(zip(my_dict['Folder'], my_dict['Filename'], my_dict['Labeler'])):
    result_dict.append({"Folder":folder,'Filename':filename,"Labeler":labler })

print(result_dict)

output:

[
  {
    "Folder": "2021-03-12_020000",
    "Filename": "2021-03-12_020000-frame79.jpg",
    "Labeler": "Labeler 2"
  },
  {
    "Folder": "2021-03-12_020000",
    "Filename": "2021-03-12_020000-frame1.jpg",
    "Labeler": "Labeler 2"
  },
  {
    "Folder": "2021-03-12_020000",
    "Filename": "2021-03- 12_020000-frame39.jpg",
    "Labeler": "Labeler 1"
  }
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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