根据列表中的键排序字典列表

时间:2018-04-16 21:04:38

标签: python sorting dictionary

如何根据key中的dictionary对其进行排序?

df1 = [('f', {'abe': 1}), ('f', {'tbeli': 1}), ('f', {'mos': 1}), ('f', {'esc': 1})]

我试过这个

L1 = [year for (title, year) in (sorted(df1.items(), key=lambda t: t[0]))]

我想要

df1 = [('f', {'abe': 1}), ('f', {'esc': 1}), ('f', {'mos': 1}), ('f', {'tbeli': 1})]

谢谢

2 个答案:

答案 0 :(得分:2)

您可以使用单独的函数来获取可迭代中的唯一项:

def only(iterable):
    x, = iterable
    return x

Dicts是密钥的迭代:

>>> only({'abe': 1})
'abe'

>>> only({'tbeli': 1})
'tbeli'

所以你可以用它来分类:

sorted(df1, key=lambda t: only(t[1]))

答案 1 :(得分:0)

如果所有的dicts只有1个密钥/对,那么这应该可行。

L1=sorted(df1, key=lambda t: list(t[1].keys())[0])