为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白衣染霜花 2023-03-01 15:39:29
我如何在 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)
查看完整描述

3 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超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


查看完整回答
反对 回复 2023-03-01
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

您可以使用它Counter来计算列表中每个项目的频率(出现次数)。


max(counter.values())会给我们最大出现元素的计数

max(counter, key=counter.get)将给出列表中的哪个项目与最高计数相关联。

========================================================================


from collections import Counter



def 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))


查看完整回答
反对 回复 2023-03-01
?
ibeautiful

TA贡献1993条经验 获得超6个赞

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])


查看完整回答
反对 回复 2023-03-01
  • 3 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号