gpt4 book ai didi

python - 跨多个键对嵌套字典进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:47 27 4
gpt4 key购买 nike

我希望所有字典值按升序排列。

我的字典 df 如下所示:

df = {("A",): {"a": {"a1": 0.5, "a2": 0.2, "a3":1.0}},
("B",): {"b1": 0.8, "b2": 0.4}}

我理想的输出是:

A⇨
 a→a2:0.2
B⇨
 b2→0.4
A⇨
 a→a1:0.5
  ・
  ・
  ・

我是这样写的:

for key,value in sorted(df.items(), key=lambda x:x[0]):
print(key)
print(value)

但是当我运行它时,字典是按字母顺序排序的。重写如 key=lambda x:x[1] 会引发 KeyError

我该怎么做?

最佳答案

我会先将 dict 展平,然后对其进行排序。像这样的东西:

def flatten_dict(d_in, d_out, parent_key):
for k, v in d_in.items():
if isinstance(v, dict):
flatten_dict(v, d_out, parent_key + (k,))
else:
d_out[parent_key + (k,)] = v


df = {("A",): {"a": {"a1": 0.5, "a2": 0.2, "a3":1.0}},
("B",): {"b1": 0.8, "b2": 0.4}}

d_out = {}

flatten_dict(df, d_out, tuple())

print(d_out)

for key, value in sorted(d_out.items(), key=lambda x: x[1]):
print(key)
print(value)

这样,您仍然可以使用它通过扁平键查找值。

关于python - 跨多个键对嵌套字典进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50287479/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com