簡體   English   中英

將字典轉換為2個關鍵字典

[英]Transform dict into 2 key dict

我有一本看起來像下面的字典:

{'AL': {'FL': 1, 'GA': 0, 'MS': 0, 'TN': 0},
'AR': {'LA': 0, 'MO': 0, 'MS': 0, 'OK': 0, 'TN': 16, 'TX': 0}
...}

我想將其轉換為兩個密鑰對字典。

FlowDict[('AL','FL')]返回{('AL','FL'): 1)}

我在另一個堆棧上看到了此錯誤,並嘗試如下實現它: {i.pop('AL'): i for i in FlowDict} 但是我認為這不是我需要走的方向。 感謝任何幫助。

嵌套字典理解在這里很方便:

>>> FlowDict = {(key1,key2):value for key1 in d for key2,value in d[key1].items()}
>>> FlowDict
{('AL', 'FL'): 1,
 ('AL', 'GA'): 0,
 ('AL', 'MS'): 0,
 ('AL', 'TN'): 0,
 ('AR', 'LA'): 0,
 ('AR', 'MO'): 0,
 ('AR', 'MS'): 0,
 ('AR', 'OK'): 0,
 ('AR', 'TN'): 16,
 ('AR', 'TX'): 0}

您的問題中的內容將無法正常工作。 那只會合並字典。

但是,嵌套字典理解將為您工作:

test = {'AL': {'FL': 1, 'GA': 0, 'MS': 0, 'TN': 0},
'AR': {'LA': 0, 'MO': 0, 'MS': 0, 'OK': 0, 'TN': 16, 'TX': 0}}

flattened = {(main_key, sub_key): value for main_key, sub_dict in test.items() for sub_key, value in sub_dict.items()}
print(flattened)

暫無
暫無

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

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