簡體   English   中英

用4個鍵創建字典,從列表中分配值

[英]Create a dictionary with 4 keys assigning values from a list

我有一個包含400多個項目的列表,但我最終需要將其解析為4列的熊貓數據框。 因此,我認為最好轉換列表以使4個項目中的每一個都從列表中獲取適當的值。

list = ['1','ABC','ABC001,'ABC002,'2','ABC','ABC001','ABC003','3','DEF','DEF001','DEF001']

我想制作一個看起來像以下的字典:

Dict = {'Id' : '1', 'TopSite' : 'ABC', 'Floor' : 'ABC001', 'Room' : 'ABC002', 'Id' : '2'.... }

所以我嘗試了以下方法:

columns = ['Id', 'TopSite', 'Floor', 'Room']
list = ['1','ABC','ABC001,'ABC002,'2','ABC','ABC001','ABC003','3','DEF','DEF001','DEF001']
DataDict = [dict(zip(columns, regionDataList))]

問題是它只給我字典中列表的前4個項目。

您只是缺少一個遍歷列表的步驟,因此您可以對與列數相對應的每個項目塊重復dict(zip(...)) (假設您真正想要的是字典列表-a與示例輸出有些不同)。 就像是:

cols = ['Id', 'TopSite', 'Floor', 'Room']
items = ['1','ABC','ABC001','ABC002','2','ABC','ABC001','ABC003','3','DEF','DEF001','DEF001']

results = [dict(zip(cols, items[i:i + len(cols)])) for i in range(0, len(items), len(cols))]

print(results)
# OUTPUT
# [{'Id': '1', 'TopSite': 'ABC', 'Floor': 'ABC001', 'Room': 'ABC002'}, {'Id': '2', 'TopSite': 'ABC', 'Floor': 'ABC001', 'Room': 'ABC003'}, {'Id': '3', 'TopSite': 'DEF', 'Floor': 'DEF001', 'Room': 'DEF001'}]

當然,如果您的目標是轉換為數據框,則實際上不需要臨時步驟。 您可以通過將列列表作為參數以及項目列表的分塊版本傳遞來到達那里。 例如:

import pandas as pd

cols = ['Id', 'TopSite', 'Floor', 'Room']
items = ['1','ABC','ABC001','ABC002','2','ABC','ABC001','ABC003','3','DEF','DEF001','DEF001']
chunks = [items[i:i + len(cols)] for i in range(0, len(items), len(cols))]

df = pd.DataFrame(chunks, columns=cols)
print(df)
# OUTPUT
#   Id TopSite   Floor    Room
# 0  1     ABC  ABC001  ABC002
# 1  2     ABC  ABC001  ABC003
# 2  3     DEF  DEF001  DEF001

順便說一句,如果您使用變量處理len(...)位,而不是在一遍又一遍地運行它們,則對於大型列表,這兩個示例都將運行得更快。

暫無
暫無

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

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