簡體   English   中英

在python中重建字典

[英]Reconstruct dictionary in python

我有兩個從配置文件創建的字典:

    dict1 = {'x':'A', 'y':'B', 'z':'C'} # decoding ABCs
    dict2 = {'ID1': ('x','n1'), 'ID2': ('y','n2'), 'ID3':('z', 'n3') } 

我想以以下格式創建新字典:

    final = {'A':{'ID1':'n1', 'ID2':'n2'}, 'C':{'ID3':'n3'}, ...}

我沒有想出一個聰明的方法來做到這一點。 有人有什么想法嗎?

假設dict2中的x,y,z和最終的A,B,C:

final = {dict1[k]: {id: v} for id, (k, v) in dict2.items()}

In [6]: dict1 = {'x':'A', 'y':'B', 'z':'C'}

In [7]: dict2 = {'ID1': ('x','n1'), 'ID2': ('y','n2'), 'ID3':('z', 'n3') }

In [8]: {dict1[k]: {id: v} for id, (k, v) in dict2.items()}
Out[8]: {'A': {'ID1': 'n1'}, 'B': {'ID2': 'n2'}, 'C': {'ID3': 'n3'}}

如果您確實表示應該有兩個As,那么就不能表示為dict。 一對配對會嗎? 然后,您必須決定要訂購什么。

In [10]: [(dict1[k], {id: v}) for id, (k, v) in dict2.items()]
Out[10]: [('A', {'ID2': 'n2'}), ('C', {'ID3': 'n3'}), ('A', {'ID1': 'n1'})]

考慮:

final = {}
for id, (x, n) in dict2.items():
    final.setdefault(dict1[x], {})[id] = n

這創造了

{'A': {'ID2': 'n2', 'ID1': 'n1'}, 'C': {'ID3': 'n3'}} 

不知道這是否滿足您的需求,但至少它是一個有效的結構。

暫無
暫無

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

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