在列表中对Python字典对象进行排序

时间:2019-06-21 17:56:23

标签: python python-3.x sorting dictionary

我正在尝试使用字典键以升序对列表进行排序。

每个词典级别只能假设一个键。

输入:

res = [{'hi': {'abc': 5}}, {'bye': {'def': 5}}, {'hi': {'cba': 5}}]

我的代码:

def getitem (item):
    return (item.keys())

print (sorted(res, key = getitem))

必需的输出:

[{'bye': {'def': 5}}, {'hi': {'abc': 5}}, {'hi': {'cba': 5}}]

1 个答案:

答案 0 :(得分:2)

您已经接近了–只需将字典传递到iter()中创建一个迭代器,然后在迭代器中请求next()项即可。如果存在多个,则按字典中的第一个键排序(Python 3.6+字典按插入时间排序)。比较器可以返回相对优先级的元组,如果外键相等,则可以对内键进行排序。

res = [{'hi': {'abc': 5}}, {'bye': {'def': 5}}, {'hi': {'cba': 5}}]

def compare(d):
    outer = next(iter(d))
    return outer, next(iter(d[outer]))

print(sorted(res, key=compare))