如何在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)
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])

试试这个,

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

您可以使用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))

最新更新