使用字典函数在python中计数

2024-04-20 03:39:03 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我试着计算一个随机数组,例如[1,2,4,6,1,6,8,3,7,8],然后输出一个数组。我知道输出不正确,但收到以下错误消息: 异常:KeyError::第9行::重复\u项计数[nums]+=1 这是什么意思?你知道吗

不,我不想用采集模块。你知道吗

我知道输出还不正确,但我想把字典修好,这样我就不会再犯同样的错误了。谢谢!你知道吗

def duplicate_items(list_numbers):
    counts = {}
    new_arr = []
    for nums in list_numbers:
        if nums in counts:
            count[nums] = 1

        else:
            counts[nums] += 1
    for k in counts:
        if count[k] > 1:
            new_arr.append(k)

return sorted(new_arr)

Tags: in消息newforifcount错误数组
3条回答

第一个循环中的ifelse被翻转,因此counts[nums] += 1找不到键,这应该是:

def duplicate_items(list_numbers):
    counts = {}
    new_arr = []
    for nums in list_numbers:
        if not nums in counts:
            counts[nums] = 1
        else:
            counts[nums] += 1
    for k in counts:
        if count[k] > 1:
            new_arr.append(k)
return sorted(new_arr)

@E.Sun给出了正确的解释,但你也可以做得更优雅一些。如果关键字不在dict中,则使用dict.get提供默认值

for nums in list_numbers:
    # If the key, nums is not in counts, take 0 as fallback value.
    counts[nums] = counts.get(nums, 0) + 1

当缺少键时,使用字典的get方法返回默认值。你知道吗

def duplicate_items(list_numbers):
    counts = {}
    for nums in list_numbers:
        counts[nums] = counts.get(nums, 0) + 1
    new_arr = [k for (k, v) in counts.items() if v > 1]

return sorted(new_arr)

相关问题 更多 >