从字典创建对象列表

2024-04-26 18:55:31 发布

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

这需要一本字典(单词)。。。请注意,这是一个示例,字典的大小可能有所不同:

{'wandered': [YearCount( year=2005, count=83769 ), YearCount( year=2006, count=87688 ), YearCount( year=2007, count=108634 ), YearCount( year=2008, count=171015 )], 'request': [YearCount( year=2005, count=646179 ), YearCount( year=2006, count=677820 ), YearCount( year=2007, count=697645 ), YearCount( year=2008, count=795265 )], 'airport': [YearCount( year=2007, count=175702 ), YearCount( year=2008, count=173294 )]}

然后我的函数返回一个WordCount对象列表,按从最不频繁到最高的顺序排列:

def wordFrequencies(words):
    count = []   
    for item, val in words.items():
        for i in val:
            wc = createWordCount(str(item), int(i.count))
            count.append(wc)
    newcount = count
    newcount.sort(key = lambda x: x.count)
    print(newcount)

输出:

[WordCount( word='wandered', count=83769 ), WordCount( word='wandered', count=87688 ), WordCount( word='wandered', count=108634 ), WordCount( word='wandered', count=171015 ), WordCount( word='airport', count=173294 ), WordCount( word='airport', count=175702 ), WordCount( word='request', count=646179 ), WordCount( word='request', count=677820 ), WordCount( word='request', count=697645 ), WordCount( word='request', count=795265 )]

但是我需要的是一个WordCount对象列表,从最频繁到最不频繁的顺序递减,每次都将上一个计数添加到上一个对象,而不是仅仅添加一个新对象,它应该如下所示:

[WordCount( word=’request’, count=2816909 ),
WordCount( word=’wandered’, count=451106 ),
WordCount( word=’airport’, count=348996 )]

Tags: 对象列表for字典requestcountitemyear
1条回答
网友
1楼 · 发布于 2024-04-26 18:55:31
def wordFrequencies(words):
    count = []   
    for item, val in words.items():
        c = 0
        for i in val:
            c+=int(i.count)
        wc = createWordCount(str(item), c)
        count.append(wc)
    newcount = count
    newcount.sort(key = lambda x: x.count,reverse=True)
    print(newcount)

相关问题 更多 >