Python 按它对词典进行排序';s嵌套字典值
这是我的输入数据:Python 按它对词典进行排序';s嵌套字典值,python,Python,这是我的输入数据: Mydict={ 红色:{'Pesho':1250000,'Chicho':101}, 蓝色:{'Pesho':10000,'Gosho':10000,'Jecho':260000}, 白色:{'Bobo':10,'Bebo':10,'Bibo':100,'Bubo':10} } 我想先按嵌套字典的值,然后按其长度对输出进行排序。怎么做 输出应如下所示: (Red) Pesho <-> 1250000 (Blue) Jecho <-> 260000
Mydict={
红色:{'Pesho':1250000,'Chicho':101},
蓝色:{'Pesho':10000,'Gosho':10000,'Jecho':260000},
白色:{'Bobo':10,'Bebo':10,'Bibo':100,'Bubo':10}
}
我想先按嵌套字典的值,然后按其长度对输出进行排序。怎么做
输出应如下所示:
(Red) Pesho <-> 1250000
(Blue) Jecho <-> 260000
(Blue) Pesho <-> 10000
(Blue) Gosho <-> 10000
(Red) Chicho <-> 101
(White) Bibo <-> 100
(White) Bobo <-> 10
(White) Bebo <-> 10
(White) Bubo <-> 10
(红色)比索1250000
(蓝色)杰乔260000
(蓝色)比索10000
(蓝色)Gosho 10000
(红色)奇科101
(白色)碧波100
(白色)波波10
(白色)贝博10
(白色)布波10号
在进一步挖掘之后,我得出了以下结论:
sorted_Mydict = dict(sorted(Mydict.items(), key=lambda x: -len(x[1].values()))) #Making a new order by the count of the nested dictionarie values
pairs = [(color, name, power) for color, inner in sorted_Mydict.items() for name, power in inner.items()] #Then creating list of pairs, as suggested in the comments
[print(f"({color}) {name} <-> {power}") for color, name, power in sorted(pairs, key=lambda x: -x[2])] #Finally printing in the desired format, ordered by the int values
sorted_Mydict=dict(sorted(Mydict.items(),key=lambda x:-len(x[1].values()))#通过嵌套字典值的计数进行新的排序
pairs=[(颜色、名称、功率)表示颜色,内部为已排序的_Mydict.items()表示名称,功率为内部为.items()。#然后按照注释中的建议创建对列表
[print(f“({color}){name}{power}”)用于颜色、名称、功率的排序(成对,key=lambda x:-x[2])#最后以所需格式打印,按int值排序
谢谢大家的帮助 这不是排序,您得到的值比输入的值多。另外,您不应该使用“dict”作为dict的名称,因为它是一种python方法。 不过,这里有一个可行的答案:)
首先需要创建一个包含3个元素的元组列表的结构
颜色、名称、值
,然后使用您的标准对其进行排序
values = {
'Red': {'Pesho': 1250000, 'Chicho': 101},
'Blue': {'Pesho': 10000, 'Gosho': 10000, 'Jecho': 260000},
'White': {'Bobo': 10, 'Bebo': 10, 'Bibo': 100, 'Bubo': 10}
}
pairs = [(outer_key, inner_key, value) for outer_key, inner in values.items()
for inner_key, value in inner.items()]
pairs.sort(key=lambda x: (-x[2], len(x[1])))
print(pairs[:3]) # [('Red', 'Pesho', 1250000), ('Blue', 'Jecho', 260000), ('Blue', 'Pesho', 10000)]
将字典值合并到元组列表中。使用适当的键函数对列表进行排序。然后可以根据需要格式化打印输出
myDict = {
'Red': {'Pesho': 1250000, 'Chicho': 101},
'Blue': {'Pesho': 10000, 'Gosho': 10000, 'Jecho': 260000},
'White': {'Bobo': 10, 'Bebo': 10, 'Bibo': 100, 'Bubo': 10}
}
r = [(C,K,n) for C,d in myDict.items() for K,n in d.items()]
r.sort(key=lambda ckn:ckn[-1], reverse=True)
for C,K,n in r: print(f"({C}) {K},<-> {n}")
(Red) Pesho,<-> 1250000
(Blue) Jecho,<-> 260000
(Blue) Pesho,<-> 10000
(Blue) Gosho,<-> 10000
(Red) Chicho,<-> 101
(White) Bibo,<-> 100
(White) Bobo,<-> 10
(White) Bebo,<-> 10
(White) Bubo,<-> 10
myDict={
红色:{'Pesho':1250000,'Chicho':101},
蓝色:{'Pesho':10000,'Gosho':10000,'Jecho':260000},
白色:{'Bobo':10,'Bebo':10,'Bibo':100,'Bubo':10}
}
r=[(C,K,n)表示myDict.items()中的C,d表示K,n表示d.items()]
r、 排序(key=lambda ckn:ckn[-1],reverse=True)
对于r中的C,K,n:print(f“({C}{K},{n}”)
(红色)比索,1250000
(蓝色)杰乔,260000
(蓝色)比索,10000
(蓝色)Gosho,10000
(红色)Chicho,101
(白色)碧波,100
(白色)波波,10岁
(白色)贝博,10岁
(白色)布波,10岁
“然后按其长度”-谁的长度?欢迎来到堆栈溢出!请拿起,阅读,和,并提供一个。“为我实现此功能”是本网站的主题。你必须做一个诚实的尝试,然后问一个关于你的算法或技术的具体问题。是的,正在研究答案,应该等一下,我下次会问:)
myDict = {
'Red': {'Pesho': 1250000, 'Chicho': 101},
'Blue': {'Pesho': 10000, 'Gosho': 10000, 'Jecho': 260000},
'White': {'Bobo': 10, 'Bebo': 10, 'Bibo': 100, 'Bubo': 10}
}
r = [(C,K,n) for C,d in myDict.items() for K,n in d.items()]
r.sort(key=lambda ckn:ckn[-1], reverse=True)
for C,K,n in r: print(f"({C}) {K},<-> {n}")
(Red) Pesho,<-> 1250000
(Blue) Jecho,<-> 260000
(Blue) Pesho,<-> 10000
(Blue) Gosho,<-> 10000
(Red) Chicho,<-> 101
(White) Bibo,<-> 100
(White) Bobo,<-> 10
(White) Bebo,<-> 10
(White) Bubo,<-> 10