Python 3.x 将下列概率分布从最低熵到最高熵进行排序

Python 3.x 将下列概率分布从最低熵到最高熵进行排序,python-3.x,Python 3.x,我试图从最低到最高排列4个字典列表,我的语法无效(我是生物信息学新手) 我试过内联排序 lists = sorted(list_dct.items, key=lambda k: k['name']) list_dct = [{'name': 0.5, 0, 0, 0.5}, {'name' : 0.25, 0.25, 0.25, 0.25}, {'name' : 0, 0, 0, 1}, {'name' : 0.25, 0, 0.5, 0.25}]

我试图从最低到最高排列4个字典列表,我的语法无效(我是生物信息学新手)

我试过内联排序

lists = sorted(list_dct.items, key=lambda k: k['name'])
list_dct = [{'name': 0.5, 0, 0, 0.5},
        {'name' : 0.25, 0.25, 0.25, 0.25},
        {'name' : 0, 0, 0, 1},
        {'name' : 0.25, 0, 0.5, 0.25}]

print(lists)        

我收到一条无效的语法消息。。。我应该将列表按最低行到最高行排序

您需要正确构建词典。我选择将这些值列为一个列表。然后用列表对它们进行排序:

list_dct = [{'name': [0.5, 0, 0, 0.5]},
            {'name' : [0.25, 0.25, 0.25, 0.25]},
            {'name' : [0, 0, 0, 1]},
            {'name' : [0.25, 0, 0.5, 0.25]}]

sorted([ d.get('name') for d in list_dct ])
1.)在
sorted()
函数之前定义
list\u dct
,否则会出现语法错误

2.)您希望对整个
列表\u dct
进行排序,而不是
列表\u dct.items()

3.)定制
key=
sorting函数,从我们正在排序的每个项目中选择“name”键

list_dct = [{'name': [0.5, 0, 0, 0.5]},
        {'name' : [0.25, 0.25, 0.25, 0.25]},
        {'name' : [0, 0, 0, 1]},
        {'name' : [0.25, 0, 0.5, 0.25]}]

lists = sorted(list_dct, key=lambda k: k['name'])

from pprint import pprint
pprint(lists)
印刷品:

[{'name': [0, 0, 0, 1]},
 {'name': [0.25, 0, 0.5, 0.25]},
 {'name': [0.25, 0.25, 0.25, 0.25]},
 {'name': [0.5, 0, 0, 0.5]}]