有没有办法在字典中获取最大的键值并打印它的项目

时间:2019-05-14 15:02:45

标签: python dictionary

我有一个作业用Python编写一个接收整数字符串的程序,该程序输出出现在字符串中的最频繁的数字。怎么做? 还有一个问题,请问-在我的代码中,我做了10个变量-如果有循环的方法或其他方法,它看起来不是简单的? 谢谢!

# 134523452345234523452345234523455555555555555555555555555555555555
value_1.split(',')
x0=value_1.count('0')
x1=value_1.count('1')
x2=value_1.count('2')
x3=value_1.count('3')
x4=value_1.count('4')
x5=value_1.count('5')
x6=value_1.count('6')
x7=value_1.count('7')
x8=value_1.count('8')
x9=value_1.count('9')
value_1_arr = [x0,x1,x2,x3,x4,x5,x6,x7,x8,x9]
value_1_arr.sort()
print(value_1_arr)
value_1_dict={x0:0,x1:1,x2:2,x3:3,x4:4,x5:5,x6:6,x7:7,x8:8,x9:9}
print(value_1_dict)

多数民众赞成在输出 [0,0,0,0,0,1,7,8,8,42] {0:9,1:1,1,7:2,8:4,42:5}

2 个答案:

答案 0 :(得分:0)

使用collections.Counter

from collections import Counter

a = '134523452345234523452345234523455555555555555555555555555555555555'

max(Counter(a).items(), key=lambda x: x[1])[0]

Counter(a).most_common(1)[0][0]

将返回:

'5'

答案 1 :(得分:0)

假设您只需要最频繁的数字,并且不想要任何import并想使用循环,我可以按照以下方式进行操作:

txt = '134523452345234523452345234523455555555555555555555555555555555555'
examples = txt.count('0')
digit = '0'
for i in ['1','2','3','4','5','6','7','8','9']:
    if txt.count(i)>examples:
        digit = i
        examples = txt.count(i)
print(digit)

输出:

5

请注意,您不需要为每个数字使用单独的变量-仅需要2个变量,一个变量可以存储到目前为止最频繁的数字以及它在字符串中出现的次数-因此您可以确定当前认为的数字是否更受欢迎。请注意,您的规范尚不清楚,例如,111222333的最频繁位数超过1,该怎么办-如果发生此类冲突,我的代码将输出最低位数值(在该示例中为1 )。请注意,我将0的数量分配给examples而不是进行examples = 0,然后从0循环到9,尽管在这种情况下可以这样做,最好避免使用这个所谓的幻数。因此,您无需知道最小的可能值。