簡體   English   中英

如何從列表中取出字典

[英]how to get a dictionary out of a list

我正在嘗試從列表中獲取字典。 首先,我有一個列表列表,並使用下面的代碼從列表列表中獲得一個列表:

y_table = [["Account Manager", "Name", "BP", "Contact", "Quote Name", "Type", "Status", "Total"],
            ["bubble", "kwlak", "5677", "conn", "987", "butter", "fish", "fill"],
            ["rose", "kwlak", "5677", "conn", "987", "butter", "fish", "fill"],
            ["purple", "kwlak", "5677", "conn", "987", "butter", "fish", "fill"],
            ["dark", "kwlak", "5677", "conn", "987", "butter", "fish", "fill"],
            ["star", "kwlak", "5677", "conn", "987", "butter", "fish", "fill"],
            ["asmr", "kwlak", "5677", "conn", "987", "butter", "fish", "fill"],]

flat_list = []
for sublist in my_table:
    for item in sublist:
        flat_list.append(item)
print(flat_list)

現在我的列表看起來像這樣:

['Account Manager', 'Name', 'BP', 'Contact', 'Quote Name', 'Type', 'Status', 'Total', 'bubble', 'kwlak', '5677', 'conn', '987', 'butter', 'fish', 'fill', 'rose', 'kwlak', '5677', 'conn', '987', 'butter', 'fish', 'fill', 'purple', 'kwlak', '5677', 'conn', '987', 'butter', 'fish', 'fill', 'dark', 'kwlak', '5677', 'conn', '987', 'butter', 'fish', 'fill', 'star', 'kwlak', '5677', 'conn', '987', 'butter', 'fish', 'fill', 'asmr', 'kwlak', '5677', 'conn', '987', 'butter', 'fish', 'fill']

現在我想從這個列表中得到一個字典,我希望它最后看起來像這樣:

Table: [{'Account Manager': 'bubble', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
{'Account Manager': 'rose', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
{'Account Manager': 'purple', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
{'Account Manager': 'dark', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
{'Account Manager': 'star', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
{'Account Manager': 'asmr', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}] 

我試圖運行這段代碼來獲取這本字典,但它不起作用:

header_my_table = flat_list[0]
my_table.remove(flat_list[0])

my_table_dict = dict(zip(header_my_table, flat_list))

print(my_table_dict)

似乎從y_table構造您想要的列表而不是展平它要容易得多。 由於您想使用第一個子列表作為鍵和其他子列表作為值,您可以簡單地迭代y_table[1:]並在y_table[0]和每個子列表的壓縮對上使用 dict 構造函數:

out = [dict(zip(y_table[0], lst)) for lst in y_table[1:]]

Output:

[{'Account Manager': 'bubble', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 
  'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
 {'Account Manager': 'rose', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 
  'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
 {'Account Manager': 'purple', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 
  'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
 {'Account Manager': 'dark', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 
  'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
 {'Account Manager': 'star', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 
  'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}, 
 {'Account Manager': 'asmr', 'Name': 'kwlak', 'BP': '5677', 'Contact': 'conn', 
  'Quote Name': '987', 'Type': 'butter', 'Status': 'fish', 'Total': 'fill'}]

暫無
暫無

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

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