提问人:Camilo170299 提问时间:11/4/2023 最后编辑:Anna Andreeva RogotulkaCamilo170299 更新时间:11/7/2023 访问量:77
将键对值添加到缺少的字典中
Adding key pair values into a dict missing
问:
我一直在尝试将列表的键值添加到字典中,而键是 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'}
有谁知道为什么会这样
答:
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}
评论
collections.Counter()