假设你有这个嵌套词典:
myDict = {
0: { 'bob': [1, 9, 4, 6, 7],
'jack': [2, 6, 9, 8, 5, 0]}
1: { 'dom': [1, 7, 8, 5],
'dean': [1, 9]}
}
如何按最后三个值中的最大值对myDict [0]进行排序,因此输出可能类似(在bob之前使用千斤顶):
jack - > 8
bob - > 7
提前谢谢
答案 0 :(得分:1)
一种解决方案是使用有序字典:
from collections import OrderedDict
def my_ordered_dict(d):
return OrderedDict(sorted(d.items(),
key=lambda t: max(t[1][-3:]),
reverse=True))
myDict = {
0: my_ordered_dict({'bob': [1, 9, 4, 6, 7],
'jack': [2, 6, 9, 8, 5, 0]}),
1: my_ordered_dict({'dom': [1, 7, 8, 5],
'dean': [1, 9]})
}
print myDict[0]
print myDict[1]
OUPUTS:
OrderedDict([('jack', [2, 6, 9, 8, 5, 0]), ('bob', [1, 9, 4, 6, 7])])
OrderedDict([('dean', [1, 9]), ('dom', [1, 7, 8, 5])])
请注意,在第二种情况下,dean
领先于dom
,即使其列表仅包含两个元素。
答案 1 :(得分:-1)
代码:
myDict = {
0: { 'bob': [1, 9, 4, 6, 7],
'jack': [2, 6, 9, 8, 5, 0]},
1: { 'dom': [1, 7, 8, 5],
'dean': [1, 9]}
}
myDict[0] = sorted(myDict[0].items(),key=lambda (k,v) : max(v[-3:]),reverse=True)
print(myDict)
输出
{0: [('jack', [2, 6, 9, 8, 5, 0]), ('bob', [1, 9, 4, 6, 7])], 1: {'dean': [1, 9], 'dom': [1, 7, 8, 5]}}
说明:
将myDict [0]转换为(键,值)对&然后按值列表中最后3个元素的最大值对其进行排序。
答案 2 :(得分:-2)
字典可以通过键访问,你可以在python中对它们进行排序。但是,您可以提取数据并将其放入列表中 - 之后,对数据进行排序非常简单!
myDict = {
0: { 'bob': [1, 9, 4, 6, 7],
'jack': [2, 6, 9, 8, 5, 0]}
1: { 'dom': [1, 7, 8, 5],
'dean': [1, 9]}
}
例如,你可以这样做:
list_one = (myDict[0]['bob'][-3:])
如果您想要最后三个值中的最大值:
greatest = list.sort(list_one)[-1] #gets the last value