使用内部字典值(Python)对外部字典排序
我目前有一本字典,看起来像这样:使用内部字典值(Python)对外部字典排序,python,Python,我目前有一本字典,看起来像这样: mydict = { 1: { "desc": "lol", "completed": False, "priority": 2, "project": "lpl" }, 12: { "desc": "lol", "completed": False, "priority": 1, "project": "lpl" }, 13: { "desc": "lol", "complet
mydict = {
1: {
"desc": "lol",
"completed": False,
"priority": 2,
"project": "lpl"
},
12: {
"desc": "lol",
"completed": False,
"priority": 1,
"project": "lpl"
},
13: {
"desc": "lol",
"completed": False,
"priority": 0,
"project": "lpl"
}}
我想按优先级排序,可以吗?按优先级排序:
sorted(mydict.iteritems(), key=lambda key_value: key_value[1].get('priority'))
如果使用Python2.7.*直到Python3.5,那么您将需要使用集合中的OderEdict以回溯到字典,否则您将失去顺序
from collections import OrderedDict
OrderedDict(sorted(mydict.iteritems(), key=lambda key_value: key_value[1].get('priority')))
如果要按升序(从最小到最大)排序,请根据插入顺序从python 3.6+开始: 如果您喜欢按降序排列(从大到小) 这将返回按排序顺序排列的键列表。例如,要按排序顺序遍历您给出的示例列表,您可以执行以下操作:
sorted_keys = sorted(mydict, key=lambda k: mydict[k]['priority'])
for k in sorted_keys:
do_something_with(mydict[k])
请记住,虽然这不会修改原始的dict。在普通python中,它可以按如下方式完成
mydict = {
1: {
"desc": "lol",
"completed": False,
"priority": 2,
"project": "lpl"
},
12: {
"desc": "lol",
"completed": False,
"priority": 1,
"project": "lpl"
},
13: {
"desc": "lol",
"completed": False,
"priority": 0,
"project": "lpl"
}}
def func(x):
return mydict[x]['priority']
m = sorted(mydict, key=func)
for item in m:
print(item, mydict[item])
将在o/p下方打印-
13 {'desc': 'lol', 'completed': False, 'priority': 0, 'project': 'lpl'}
12 {'desc': 'lol', 'completed': False, 'priority': 1, 'project': 'lpl'}
1 {'desc': 'lol', 'completed': False, 'priority': 2, 'project': 'lpl'}
对dict排序意味着什么?显示预期的结果字典条目是无序的。是否要将其转换为列表,列表项为(键、值)对,然后对该列表进行排序?
mydict = {
1: {
"desc": "lol",
"completed": False,
"priority": 2,
"project": "lpl"
},
12: {
"desc": "lol",
"completed": False,
"priority": 1,
"project": "lpl"
},
13: {
"desc": "lol",
"completed": False,
"priority": 0,
"project": "lpl"
}}
def func(x):
return mydict[x]['priority']
m = sorted(mydict, key=func)
for item in m:
print(item, mydict[item])
13 {'desc': 'lol', 'completed': False, 'priority': 0, 'project': 'lpl'}
12 {'desc': 'lol', 'completed': False, 'priority': 1, 'project': 'lpl'}
1 {'desc': 'lol', 'completed': False, 'priority': 2, 'project': 'lpl'}