gpt4 book ai didi

Python:按嵌套字典值排序(无类别)

转载 作者:行者123 更新时间:2023-12-01 08:57:01 25 4
gpt4 key购买 nike

我需要按每个人的嵌套值对以下内容进行排序(降序):

d={
'BILLY': {'beer': 1, 'socks': 3, 'germs': 2},
'JAN': {'mewo': 18, 'towel': 83, 'bee': 27},
'NICK': {'shoes': 50, 'hats': 15, 'dogs': 95}
}

结果应该是

比利:
socks = 3
细菌 = 2
啤酒= 1

一月:
毛巾=83
蜜蜂=27
喵= 18

尼克:
狗= 95
鞋子 = 50
帽子 = 15

我尝试了以下操作,但出现错误:

outer_keys = d.keys()
print ("outer keys:")
for outer_key in outer_keys:
print (outer_key)

print ("*" * 40)
inner_keys = d[outer_key].keys()

for key in inner_keys:
ordered = sorted(d.items(), key=lambda item: item[1][key])

print(ordered)

最佳答案

由于您还需要迭代子词典(存储在值中),因此您需要一个嵌套循环。所以“骨架”看起来像:

for k, subdic in d.items():
print(k)
# ...
print()

字典本身是无序的。我们需要一个维持顺序的数据结构,例如列表。我们可以通过获取元组的来对项目进行排序。因此,对于子词典,我们可以这样排序:

sorted(subdic.items(), key=lambda x: x[1], reverse=True)

然后我们还需要迭代这些项目,并打印它们,例如:

for subk, v in sorted(subdic.items(), key=lambda x: x[1], reverse=True):
print(f'{subk} = {v}')

所以我们可以将两者结合起来:

for k, subdic in d.items():
print(k)
for subk, v in sorted(subdic.items(), key=lambda x: x[1], reverse=True):
print(f'{subk} = {v}')
print()

关于Python:按嵌套字典值排序(无类别),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52729503/

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