我有一个嵌套的字典,如下所示:
{(1, 1): {'Transportation_Cost': 4},
(1, 2): {'Transportation_Cost': 5},
(1, 3): {'Transportation_Cost': 6},
(1, 4): {'Transportation_Cost': 8},
(1, 5): {'Transportation_Cost': 10},
(2, 1): {'Transportation_Cost': 6},
(2, 2): {'Transportation_Cost': 4},
(2, 3): {'Transportation_Cost': 3},
(2, 4): {'Transportation_Cost': 5},
(2, 5): {'Transportation_Cost': 8},
(3, 1): {'Transportation_Cost': 9},
(3, 2): {'Transportation_Cost': 7},
(3, 3): {'Transportation_Cost': 4},
(3, 4): {'Transportation_Cost': 2},
(3, 5): {'Transportation_Cost': 4}}我想把它转换成一个平面字典,看起来像这样:
{(1, 1): 4,
(1, 2): 5,
(1, 3): 6,
(1, 4): 8,
(1, 5): 10,
(2, 1): 6,
(2, 2): 4,
(2, 3): 3,
(2, 4): 5,
(2, 5): 8,
(3, 1): 9,
(3, 2): 7,
(3, 3): 4,
(3, 4): 2,
(3, 5): 4}我希望有一个简单的函数,可以扁平化我的嵌套字典。我尝试了here中的FlatDict函数,但我不确定如何修改它,因为我的字典中有一个元组。
对于如何获得所需的输出有什么建议吗?
发布于 2020-06-27 03:09:06
您可以尝试使用 dict Comprehension
dct={(1, 1): {'Transportation_Cost': 4},
(1, 2): {'Transportation_Cost': 5},
(1, 3): {'Transportation_Cost': 6},
(1, 4): {'Transportation_Cost': 8},
(1, 5): {'Transportation_Cost': 10},
(2, 1): {'Transportation_Cost': 6},
(2, 2): {'Transportation_Cost': 4},
(2, 3): {'Transportation_Cost': 3},
(2, 4): {'Transportation_Cost': 5},
(2, 5): {'Transportation_Cost': 8},
(3, 1): {'Transportation_Cost': 9},
(3, 2): {'Transportation_Cost': 7},
(3, 3): {'Transportation_Cost': 4},
(3, 4): {'Transportation_Cost': 2},
(3, 5): {'Transportation_Cost': 4}}
dct={k:v['Transportation_Cost'] for k,v in dct.items()}
print(dct)输出:
{(1, 1): 4,
(1, 2): 5,
(1, 3): 6,
(1, 4): 8,
(1, 5): 10,
(2, 1): 6,
(2, 2): 4,
(2, 3): 3,
(2, 4): 5,
(2, 5): 8,
(3, 1): 9,
(3, 2): 7,
(3, 3): 4,
(3, 4): 2,
(3, 5): 4}发布于 2020-06-27 03:42:13
下面是如何使用dict的理解:
d = {(1, 1): {'Transportation_Cost': 4},
(1, 2): {'Transportation_Cost': 5},
(1, 3): {'Transportation_Cost': 6},
(1, 4): {'Transportation_Cost': 8},
(1, 5): {'Transportation_Cost': 10},
(2, 1): {'Transportation_Cost': 6},
(2, 2): {'Transportation_Cost': 4},
(2, 3): {'Transportation_Cost': 3},
(2, 4): {'Transportation_Cost': 5},
(2, 5): {'Transportation_Cost': 8},
(3, 1): {'Transportation_Cost': 9},
(3, 2): {'Transportation_Cost': 7},
(3, 3): {'Transportation_Cost': 4},
(3, 4): {'Transportation_Cost': 2},
(3, 5): {'Transportation_Cost': 4}}
d = {k:d[k]['Transportation_Cost'] for k in d}
print(d)输出:
{(1, 1): 4,
(1, 2): 5,
(1, 3): 6,
(1, 4): 8,
(1, 5): 10,
(2, 1): 6,
(2, 2): 4,
(2, 3): 3,
(2, 4): 5,
(2, 5): 8,
(3, 1): 9,
(3, 2): 7,
(3, 3): 4,
(3, 4): 2,
(3, 5): 4}发布于 2020-06-27 03:13:59
您可以从Series对象创建字典,而不是编辑字典。
pd.Series(tc).to_dict()这样你就不必担心字典格式的字典了。
https://stackoverflow.com/questions/62601276
复制相似问题