将键对值添加到缺少的字典中

Adding key pair values into a dict missing

提问人:Camilo170299 提问时间:11/4/2023 最后编辑:Anna Andreeva RogotulkaCamilo170299 更新时间:11/7/2023 访问量:77

问:

我一直在尝试将列表的键值添加到字典中,而键是 X 在列表中重复的次数,并且值是 X 本身。

my_list = ["apple", "cherry", "apple", "potato", "tomato", "apple"]
my_grocery = {}
while True:
    try:
        prompt = input().upper().strip()
        my_list.append(prompt)
    except EOFError:
        my_list_unique = sorted(list(set(my_list)))
        for _ in my_list_unique:
            my_grocery[my_list.count(_)] = _
            #print(f'{my_list.count(_)} {_}')
        print(my_grocery)
        break

预期输出为:

{3: APPLE, 1: CHERRY, 1: POTATO, 1: TOMATO}

收到的实际输出为:

{3: 'APPLE', 1: 'TOMATO'}

有谁知道为什么会这样

python 错误处理 输出 无限循环

评论

5赞 Barmar 11/4/2023
字典中不能有重复的键。您应该使用单词作为键,并使用计数作为值。
1赞 Barmar 11/4/2023
仅供参考,有一个内置功能可以做到这一点。collections.Counter()

答:

3赞 Anna Andreeva Rogotulka 11/4/2023 #1

您不能在 dict 中有重复的键,在您的情况下是“1”,您可以使用计数器来节省每种产品类型的键值

from collections import Counter

my_list = []

while True:
    try:
        prompt = input().strip()
        if not prompt:
            break
        my_list.append(prompt)
    except EOFError:
        break

item_counts = Counter(my_list)

print(item_counts)

计数器({'番茄': 2, '苹果': 2, '芒果': 1})

1赞 user19077881 11/4/2023 #2

如前所述,您不能有重复的密钥,因此应使用产品作为密钥。在不使用集合模块的情况下:

my_list = ['apple', 'cherry', 'apple', 'potato', 'tomato', 'apple']

my_grocery = {}


for entry in my_list:
    my_grocery[entry] =  my_grocery.get(entry, 0) + 1
            
print(my_grocery)

给:

{'apple': 3, 'cherry': 1, 'potato': 1, 'tomato': 1}