对一个值字典的列表进行排序

Mak*_*man 2 python dictionary list

我有数据:

{'foo': [{1: 55}, {'c': 43}], 'bar': [{1: 43}, {'c': 40}]}
Run Code Online (Sandbox Code Playgroud)

我想根据它的值对foo和bar中的字典进行排序:

{'foo': [{'c': 43}, {1: 55}], ...}
Run Code Online (Sandbox Code Playgroud)

我不想排序'foo'和'bar'.

你有这么简单的方法吗?对不起,如果我在编写dicts/lists时出错了.谢谢

jpp*_*jpp 6

这是一种方式.sorted接受一个key接受匿名lambda函数的参数.由于每个字典只有一个键/值,您可以列出您的值并选择第一个.

d = {'foo': [{1: 55}, {'c': 43}], 'bar': [{1: 43}, {'c': 40}]}

res = {k: sorted(v, key=lambda x: list(x.values())[0]) for k, v in d.items()}

# {'bar': [{'c': 40}, {1: 43}], 'foo': [{'c': 43}, {1: 55}]}
Run Code Online (Sandbox Code Playgroud)

  • 'foo'和'bar'被*排序.字典不是订购的.您的输入字典也没有订单.只是因为它在实例化或打印时表示为这样,并不意味着它是有序的. (2认同)
  • @Shashank确切地说,那些55和43将被用作`foo`列表中项目的键,而`sorted()`将按此排序. (2认同)