通过放入字典

时间:2015-11-24 19:12:13

标签: python list dictionary key

alist = [5, 7, 6, 2, 9, 1, 7]

D = {}

列表中的每个唯一编号,设置一个新密钥 对于字典中的每个键,计算该键的编号并设置为值

这应该看起来像{5:1, 2:1, 6:1, 9:1, 1:1, 7:2}

算法:

For each number n on the input list:
∗ If n in count: set count[n] to count[n] + 1
∗ else: set count[n] to 1

我不知道如何解决这个问题。谁能告诉我怎么样?

尝试:

for number in alist:
    if number in D:
        D[number] = D[number]+1
    else:
        D[number] = 1

错误:

Traceback (most recent call last): File "<pyshell#15>", line 3, in
<module> D[number] = D[number]+1 KeyError: 5

5 个答案:

答案 0 :(得分:2)

    <?php echo $foo; ?>

A PHP ERROR WAS ENCOUNTERED

Severity: Notice

Message: Undefined variable: foo

Filename: template/header.php

答案 1 :(得分:1)

最简单的方法是字典理解

count_dict = {elem:a_list.count(elem) for elem in a_list}

它就像一个for循环,但它指定了每个字典项的键和值。

答案 2 :(得分:1)

Ayush Shanker's answer是完全有效的方式来做你想要的。我将指出如何修复您现在拥有的代码。

首先,在这两行中

for number in alist:
    if number in alist:

你基本上对于alist中的每个号码都说'#34;检查它是否在alist&#34;中。当然如此!所以,你真的希望第二行有if number in D:,因为那时你要检查这个数字是否在你正在建立的词典中。

第二个问题是:

        D[number] = D[number+1]

numbernumber+1这里是索引,因此您指的是D中的两个不同元素。解决方案是将+1移到外面。这就是固定代码的样子:

for number in alist:
    if number in D:
        D[number] = D[number] + 1
    else:
        D[number] = 1

要更加Pythonic,您还可以将D[number] = D[number] + 1替换为D[number] += 1

答案 3 :(得分:0)

要修复代码和算法,您需要检查even是否在n中(它返回D.keys()字典的键列表:

D

答案 4 :(得分:0)

解决方案:

 def mode(somelist):
        count = {}
        for n in alist:
            if n in count:
                count[n]+=1
            else:
                count[n] = 1
        return(count)