将dict转换为2个关键词

时间:2015-10-30 18:44:40

标签: python dictionary

我有一个如下所示的字典:

{'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)}

我在另一个stack上看到了这个并试图按如下方式实现它: {i.pop('AL'): i for i in FlowDict}。但我不认为这是我需要走的路。感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

嵌套字典理解在这里派上用场:

>>> 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}

答案 1 :(得分:1)

你在问题​​中的所作所为并不是很有效。这只会合并dicts。

然而,嵌套字典理解适用于您:

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)