下面是我尝试过的代码,check_keyword()方法主要是将字符串与单词词典进行比较,如果单词匹配,则递增计数并在词典中找到最大值:
请关注我评论“找到最大浮点值”的代码
def check_keyword():
new_dict = {}
count_dict = {}
new_list = []
new_list2 = []
count = 0
with open(unknown.txt, "r") as fp:
unknown_file = fp.read()
print(unknown_file)
# read key phases from text file as a dictionary
df = pd.read_csv(key_phases.txt, sep='|')
key_phases_dict = df.to_dict(orient='records')
for i in key_phases_dict:
new_list = list(i.values())
new_dict[new_list[0]] = new_list[1]
for key in new_dict.keys():
count_dict[key] = 0
new_list2 = new_dict[key].split(",")
new_dict[key] = new_list2
for j in new_dict[key]:
if j in unknown_file:
print(j)
count_dict[key] = count_dict[key] + 1
count_dict[key] = float(count_dict[key] / len(new_list2))
print(count_dict)
# find the maximum float value
for k, v in count_dict.items():
if v > count:
highest_list = []
result = k, v
highest_list.append(result)
count = v
else:
v == count
result = k, v
highest_list.append(result)
return highest_list
count_dic的输出:
{2: 0.02666666666666667, 3: 0.08666666666666667, 4: 0.08666666666666667, 5: 0.0, 6: 0.04666666666666667, 7: 0.02, 8: 0.013333333333333334}
遇到的问题是,当我打印highest_list时,它给了我(它没有显示出最大值):
[(3, 0.08666666666666667), (4, 0.08666666666666667), (5, 0.0), (6, 0.04666666666666667), (7, 0.02), (8, 0.013333333333333334)]
所需的输出要实现:
[(3, 0.08666666666666667),(4, 0.08666666666666667)]
最佳答案
您可以只计算最大值,然后使用列表推导:
d = {2: 0.02666666666666667, 3: 0.08666666666666667, 4: 0.08666666666666667, 5: 0.0, 6: 0.04666666666666667, 7: 0.02, 8: 0.013333333333333334}
maxval = max(d.values())
res = [(k, v) for k, v in d.items() if v == maxval]
[(3, 0.08666666666666667), (4, 0.08666666666666667)]