对字典中的项目进行计数和排序

时间:2016-10-03 18:37:58

标签: python dictionary

当用户提供输入时,将其放入字典中。如果没有填充任何内容或blanc,代码应该停止并在字典中给出所有输入+出现。

nummer = 1
def namen(namen):
    var = 1

    key = {}

    while var == 1:
        invoer = input('Volgende naam: ')
        if invoer != '':
            global nummer
            key[nummer] = invoer
            nummer +=1
        else:

            return key
            break

hey = (namen(5))

我尝试了counterfor循环,但这不起作用。 因此,例如,如果input =`h,d,d,hh,a,s

`it should give `
h=1
d=2
hh=1
a=1
s=1`

3 个答案:

答案 0 :(得分:1)

这是对您的代码进行的重新编写,可以实现我认为您要实现的目标。它利用了标准collections模块中的Counter

from collections import Counter

def namen():

    bedragen = Counter()

    while True:
        invoer = input('Volgende naam: ')
        if invoer == '':
            break
        bedragen[invoer] += 1
    return bedragen


hey = namen()

答案 1 :(得分:0)

看起来很有效..

key = {}

while True:
    uinp = raw_input('Write something: ')
    print uinp
    if len(uinp) == 0:
        break

    try:
        key[uinp] += 1
    except:
        key[uinp] = 1

print key

这就是你想要的吗?

答案 2 :(得分:0)

如果保证输入被,(逗号空格)分隔,则可以将以下代码段与collections.Counter一起使用:

>>> import collections
>>> input = 'h, d, d, hh, a, s'
>>> collections.Counter(input.split(', '))
Counter({'d': 2, 'a': 1, 'hh': 1, 's': 1, 'h': 1})

要获取特定格式,您可以执行以下操作:

>>> for k, v in collections.Counter(input.split(', ')).items():
...     print ('{}={}'.format(k, v))
...
a=1
hh=1
s=1
d=2
h=1

如果您只想使用逗号分隔并忽略其他空格,则可以使用input.split(', ')替换上述任何代码段中的[i.strip() for i in input.split(',')]