簡體   English   中英

如何從單個字典創建字典列表?

[英]How to create list of dictionaries from a single dictionary?

如何將字典列表轉換為單個字典?

例如,假設我的初始列表如下:

Dictionary_list = [{key:value}, {key2:value2}, {key3:value3}]

我需要結果字典為:

New_dictionary = {key:value, key2:value2, key3:value3}

您可以使用字典理解來實現這一點:

>>> my_list = [{'key':'value'}, {'key2':'value2'}, {'key3':'value3'}]

>>> my_dict = {k: v for item in my_list for k, v in item.items()}
>>> my_dict
{'key3': 'value3', 'key2': 'value2', 'key': 'value'}

注意:如果您的初始字典列表中存在多個字典中的任何“鍵”,則上述解決方案最終將保留初始列表中“鍵”的最后一個“值”。

另一種解決方案是創建一個空字典並更新它:

>>> my_list = [{'key':'value'}, {'key2':'value2'}, {'key3':'value3'}]
>>> my_dict = {}
>>> for d in my_list: my_dict.update(d)
...
>>> my_dict
{'key': 'value', 'key2': 'value2', 'key3': 'value3'}

通常, update() 方法非常有用,通常當您想要創建包含來自連續字典的變量的“環境”時。

函數式編程答案:

from functools import reduce # depending on version of python you might need this. 

my_list = [{'key':'value'}, {'key2':'value2'}, {'key3':'value3'}]
def func(x,y):
    x.update(y)
    return x
new_dict = reduce(func, my_list)

>>> new_dict
{'key': 'value', 'key2': 'value2', 'key3': 'value3'}

一個班輪:

new_dict = reduce(lambda x, y: x.update(y) or x, my_list) # use side effect in lambda

暫無
暫無

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

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