关于在 Python 字典中增加一个键值的问题

Question about increment a key value in Python dictionary

我是 python 的新手,有一个关于在字典中递增键值的问题!我能够 google 并找到了解决方案 - 比如 get() 或 defaultdict()。但是,我仍然不明白其背后的逻辑。如果您能向我解释一下,将不胜感激!!

所以我原来的代码是这样的:

list = ['a', 'b', 'c', 'd', 'e']
my_dict = {}
for item in list:
    my_dict[item] += 1
print(my_dict)

此代码抛出键错误,我知道这是因为键值不存在。 这是我尝试过的解决方案:

list = ['a', 'b', 'c', 'd', 'e']

mydict = {}
for item in list:
    if item not in mydict.keys():
        mydict[item] = 1
    else:
        mydict[item] += 1
print(mydict)

但是,输出并没有真正增加值并给我这个:

{'a': 1, 'b': 1, 'c': 1, 'd': 1, 'e': 1}

我想当它循环遍历列表中的每个项目时,它应该每次都检查“if”语句,所以我很困惑为什么它没有发生在这里。

您知道是否可以在不使用我上面提到的任何 function/method 的情况下完成这项工作吗?非常感谢!

最好的, 元

您正在遍历列表,因此您检查的值是 'a',然后是 'b',依此类推。这些中的每一个都不存在于 dict 中,因此它进入 if 子句并执行:mydict[item] = 1。 如果你想看到更新的值,你需要多次检查同一个键。

在你的列表中你有一些独特的项目,如果你有重复的元素,你会看到你想要做什么,即:

>>> import random
>>> a_list = ['a', 'b', 'c', 'd', 'e']
>>> my_dict = {}
>>> for item in [random.choice(a_list) for i in range(30)]:
...     try:
...             my_dict[item] += 1
...     except KeyError:
...             my_dict[item] = 1
...
>>> my_dict
{'a': 8, 'e': 5, 'd': 4, 'c': 12, 'b': 1}

不完全清楚的是,如果您想更新“键值”本身或特定 key-value 对的关联值。