簡體   English   中英

如何從嵌套列表創建字典列表

[英]how to create a list of dictionaries from nested lists

我有字典的“鍵”的標頭列表和要用作“值”的嵌套列表,並且想返回字典列表。 但是,當我遍歷嵌套列表和標題列表並將字典附加到列表中時,我只會得到最后一個字典。 我在這里做錯了什么?

rows = [['Branden',27,'M'],['Casey',22,'F'],['Paul',30,'M']]
header = ['Name','Age','Gender']
d = {}
data = []
for item in rows:
    for key,value in zip(header,item):
      d[key] = value
data.append(d)

data

我得到的輸出:

[{'Age': 30, 'Gender': 'M', 'Name': 'Paul'},
 {'Age': 30, 'Gender': 'M', 'Name': 'Paul'},
 {'Age': 30, 'Gender': 'M', 'Name': 'Paul'}]

我想要的輸出:

[{'Name': 'Branden', 'Age': 27, 'Gender': 'M'}, 
{'Name': 'Casey', 'Age': 22, 'Gender': 'F'}, 
{'Name': 'Paul', 'Age': 30, 'Gender': 'M'}]

我在這里做錯了什么?

dict使用可重復的元組將它們解釋為鍵值對。 因此,您要做的就是使用zip(headerrow, next_row) (偽代碼!)作為所有行的參數調用dict

>>> header = ['key1', 'key2', 'key3']
>>> values = [['a', 'b', 'c'], ['d', 'e', 'f']]
>>> dicts = [dict(zip(header, v)) for v in values]
>>> dicts
[{'key3': 'c', 'key2': 'b', 'key1': 'a'}, {'key3': 'f', 'key2': 'e', 'key1': 'd'}]

您沒有為每個項目創建新的詞典。 d = {}移動到以下行for item in rows:

您需要按行為每個子列表創建一個新字典,並將其追加到數據中,如下所示:

rows = [['Branden',27,'M'],['Casey',22,'F'],['Paul',30,'M']]
header = ['Name','Age','Gender']
data = []
for sublist in rows:
    d = {} #new dictionary per sublist
    for i,element in enumerate(sublist):
        # i is the iteration number, beginning with 0
        d [header[i]] = element
    data.append(d)
print (data)

打印(一行):

[{'Gender': 'M', 'Age': 27, 'Name': 'Branden'}, 
{'Gender': 'F', 'Age': 22, 'Name': 'Casey'}, 
{'Gender': 'M', 'Age': 30, 'Name': 'Paul'}]

暫無
暫無

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

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