我正在尝试使用字典键以升序对列表进行排序。
每个词典级别只能假设一个键。
输入:
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}}]
答案 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))