在字典中存储变量并按降序排序

2024-09-28 01:24:53 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的代码中,如何在字典中按降序存储和排序。你知道吗

我想将Item存储为键,将Mutual_information存储为值,并根据Mutual_information数值按降序存储在字典中。你知道吗

我的编码,包含变量itemMutual_information

for item in lines:
    specificy = c[item]
    try:
        MI1= specificy/float(specificx)
        MI2= MI1*specificx
        M13= specificx*specificx
        Mutual_Information = MI1* math.log(MI1/float(MI2))
        print item, Mutual_Information #to be stored in descendin
    except ZeroDivisionError:
        print "divide by zero"    

Tags: 代码in字典information排序floatitemprint
1条回答
网友
1楼 · 发布于 2024-09-28 01:24:53

正如我在评论中提到的,dict是无序的,因此这将获取列表中的所有项,然后按相反顺序排序,并从这些排序的元素创建一个OrderedDict

from collections import OrderedDict
from operator import itemgetter

# store all key,value pairings to sort later
items = []
for item in lines:
    specificy = c[item]
    try:
        MI1= specificy/float(specificx)
        MI2= MI1*specificx
        M13= specificx*specificx
        Mutual_Information = MI1* math.log(MI1/float(MI2))
        # add tuple of key/value to items
        items.append((item,Mutual_Information))
    except ZeroDivisionError:
        print "divide by zero"

# create OrderedDict from sorted items, sorting by the second element
d = OrderedDict(sorted(items,key=itemgetter(1),reverse=True))

使用元组列表的示例:

from collections import OrderedDict

items = [(1, 3), (4, 7), (2, 4), (6, 10)]
from operator import itemgetter

d = OrderedDict(sorted(items, key=itemgetter(1), reverse=True))
print(d)
OrderedDict([(6, 10), (4, 7), (2, 4), (1, 3)])

相关问题 更多 >

    热门问题