如何参考python中的字典在列表中找到最高值的元素

我如何在 python 中编写一个函数,它可以:

  • 遍历可能包含重复单词并引用字典的单词字符串列表,

  • 找到绝对和最高的词,然后

  • 将其与相应的绝对值一起输出。

  • 该函数还必须忽略字典中没有的单词。

例如,
假设函数被调用H_abs_W()
给定以下列表和字典:

list_1 = ['apples','oranges','pears','apples'] 
Dict_1 = {'apples':5.23,'pears':-7.62}

然后将函数调用为:

H_abs_W(list_1,Dict_1)

应该给出输出:

'苹果',10.46

编辑:最后我设法用下面的代码做到了。查看答案,原来我可以用更短的方式完成它,大声笑。

def H_abs_W(list_1,Dict_1):

    

    freqW = {}

    for char in list_1:

        if char in freqW:

            freqW[char] += 1

        else:

            freqW[char] = 1


    ASum_W = 0

    i_word = ''

    for a,b in freqW.items():

            x = 0

            d = Dict_1.get(a,0)

            x = abs(float(b)*float(d))

            if x > ASum_W:

                ASum_W = x

                i_word = a

       

    return(i_word,ASum_W)


白衣染霜花
浏览 199回答 3
3回答

繁星点点滴滴

尝试这个,key, value = sorted(Dict_1.items(), key = lambda x : x[1], reverse=True)[0]print(f"{key}, {list_1.count(key) * value}")# apples, 10.46

慕尼黑8549860

您可以使用它Counter来计算列表中每个项目的频率(出现次数)。max(counter.values())会给我们最大出现元素的计数max(counter, key=counter.get)将给出列表中的哪个项目与最高计数相关联。========================================================================from collections import Counterdef H_abs_W(list_1, Dict_1):    counter = Counter(list_1)    count = max(counter.values())    item = max(counter, key=counter.get)    return item, abs(count * Dict_1.get(item))

ibeautiful

list_1 = ['apples','oranges','pears','apples'] Dict_1 = {'apples':5.23,'pears':-7.62}d = {k:0 for k in list_1}for x in list_1:    if x in Dict_1.keys():        d[x]+=Dict_1[x]        m = max(Dict_1, key=Dict_1.get)print(m,Dict_1[m])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python