[英]Multikey dictionary from 2d array
嘗試使用列表中的值創建多鍵字典,其中字典的鍵是第一列和第一行值,空單元格除外。
下面的代碼不會返回預期的結果。 我還嘗試了地圖功能和列表理解。
# list data
list_data = [['', '', 'VARIANT1', 'VARIANT2'],
['power', 'kW', '12', '20'],
['range', 'm', '200', '400'],
['colour', '', 'blue', 'yellow']]
# my code
import collections
dict_data = collections.defaultdict()
for row in range(1: len(list_data)):
for column in range(2: len(list_data[0])):
dict_data[(list_data[row][0], list_data[0][column])
] = list_data[row][column]
# desired output
dict_data = {('power', 'VARIANT1'): '12',
('range', 'VARIANT1'): '200',
('colour', 'VARIANT1'): 'blue',
('power', 'VARIANT2'): '20',
('range', 'VARIANT2'): '400',
('colour', 'VARIANT2'): 'yellow', }
你可以用字典理解來做到這一點:
list_data = [['', '', 'VARIANT1', 'VARIANT2'],
['power', 'kW', '12', '20'],
['range', 'm', '200', '400'],
['colour','' , 'blue', 'yellow']]
keys = {(x[0], y): x[i] for x in list_data[1:] for i, y in enumerate(list_data[0]) if i >= 2}
keys_sorted = {k: v for k, v in sorted(keys.items(), key=lambda x: x[0][1])}
輸出:
>>> keys
{('power', 'VARIANT1'): '12',
('power', 'VARIANT2'): '20',
('range', 'VARIANT1'): '200',
('range', 'VARIANT2'): '400',
('colour', 'VARIANT1'): 'blue',
('colour', 'VARIANT2'): 'yellow'}
或排序為您的示例輸出:
>>> keys_sorted
{('power', 'VARIANT1'): '12',
('range', 'VARIANT1'): '200',
('colour', 'VARIANT1'): 'blue',
('power', 'VARIANT2'): '20',
('range', 'VARIANT2'): '400',
('colour', 'VARIANT2'): 'yellow'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.