Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用内部字典值(Python)对外部字典排序_Python - Fatal编程技术网

使用内部字典值(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'}