嗨 :) 我有這個表,我需要將它轉換成一個字典,其中第一行是鍵,然后其余表中的每個值都是值,但每次都遍歷它們。我有這張桌子:
my_table = [["Account Manager", "Name", "BP", "Contact", "Quote Name", "Type", "Status", "Total"],
["bubble", "kwlak", "5677", "conn", "987", "butter", "fish", "fill", "stat", "total"],
["rose", "kwlak", "5677", "conn", "987", "butter", "fish", "fill", "stat", "total"],
["purple", "kwlak", "5677", "conn", "987", "butter", "fish", "fill", "stat", "total"],
["dark", "kwlak", "5677", "conn", "987", "butter", "fish", "fill", "stat", "total"],
["star", "kwlak", "5677", "conn", "987", "butter", "fish", "fill", "stat", "total"],
["asmr", "kwlak", "5677", "conn", "987", "butter", "fish", "fill", "stat", "total"],]
這是用于迭代它的代碼:
dict_from_table = {}
for position, key in enumerate(my_table[0]):
dict_from_table[key] = []
for value_row in my_table[1:2]:
dict_from_table[key].append(value_row[position])
print(dict_from_table)
這是來自它的輸出:
{'Account Manager': ['bubble'], 'Name': ['kwlak'], 'BP': ['5677'], 'Contact': ['conn'], 'Quote Name': ['987'], 'Type': ['butter'], 'Status': ['fish'], 'Total': ['fill']}
我需要它遍歷所有串列并為鍵(帳戶管理器、名稱等)回傳每個值一次,但我也不希望它以串列的形式回傳值,我希望它與在同一個字典中按鍵。我需要另一個 for 回圈嗎?
uj5u.com熱心網友回復:
你的嵌套回圈是倒置的。由于您的鍵是固定的,因此從這些鍵構建一個空字典,并將空串列作為值:
In [7]: my_table = [["Account Manager", "Name", "BP", "Contact", "Quote Name", "Type", "Status", "Total"],
...: ["bubble", "kwlak", "5677", "conn", "987", "butter", "fish", "fill", "stat", "total"],
...: ["rose", "kwlak", "5677", "conn", "987", "butter", "fish", "fill", "stat", "total"],
...: ["purple", "kwlak", "5677", "conn", "987", "butter", "fish", "fill", "stat", "total"],
...: ["dark", "kwlak", "5677", "conn", "987", "butter", "fish", "fill", "stat", "total"],
...: ["star", "kwlak", "5677", "conn", "987", "butter", "fish", "fill", "stat", "total"],
...: ["asmr", "kwlak", "5677", "conn", "987", "butter", "fish", "fill", "stat", "total"],]
...:
In [8]: keys = my_table[0]
In [9]: result = {k:[] for k in keys}
然后遍歷表的其余部分:
In [10]: for row in my_table[1:]:
...: for k,v in zip(keys, row):
...: result[k].append(v)
...:
In [11]: result
Out[11]:
{'Account Manager': ['bubble', 'rose', 'purple', 'dark', 'star', 'asmr'],
'Name': ['kwlak', 'kwlak', 'kwlak', 'kwlak', 'kwlak', 'kwlak'],
'BP': ['5677', '5677', '5677', '5677', '5677', '5677'],
'Contact': ['conn', 'conn', 'conn', 'conn', 'conn', 'conn'],
'Quote Name': ['987', '987', '987', '987', '987', '987'],
'Type': ['butter', 'butter', 'butter', 'butter', 'butter', 'butter'],
'Status': ['fish', 'fish', 'fish', 'fish', 'fish', 'fish'],
'Total': ['fill', 'fill', 'fill', 'fill', 'fill', 'fill']}
雖然請注意,這假設您在第一行中的鍵與其余鍵對齊......示例資料沒有,但我認為這只是一個轉錄錯誤。
uj5u.com熱心網友回復:
您可以使用zip“轉置”表格(切換行和列):
output = {column[0]: column[1:] for column in zip(*my_table)}
(或者list(column[1:])如果您需要一個串列而不是元組,請使用。)
但是,如果您對表資料進行大量操作,請考慮使用pandas. 您可以像這樣創建一個資料框:
import pandas as pd
df = pd.DataFrame(my_table[1:], columns=my_table[0])
然后將其匯出回這樣的串列字典:
output = df.to_dict("list")
(您需要首先確保每行中的列標題與單元格的數量相同。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/412414.html
標籤:
下一篇:自定義JSON解碼器
