pets = [('Hatiko', 'Parker', 'Wilson', 50),
('Rusty', 'Josh', 'King', 25),
('Fido', 'John', 'Smith', 28),
('Butch', 'Jake', 'Smirnoff', 18),
('Odi', 'Emma', 'Wright', 18),
('Balto', 'Josh', 'King', 25),
('Barry', 'Josh', 'King', 25),
('Snape', 'Hannah', 'Taylor', 40),
('Horry', 'Martha', 'Robinson', 73),
('Giro', 'Alex', 'Martinez', 65),
('Zooma', 'Simon', 'Nevel', 32),
('Lassie', 'Josh', 'King', 25),
('Chase', 'Martha', 'Robinson', 73),
('Ace', 'Martha', 'Williams', 38),
('Rocky', 'Simon', 'Nevel', 32)]
result = {}
for tup in pets:
if tup not in result:
result[tup[1], tup[2], tup[3]] = [tup[0]]
else:
result[tup[1], tup[2], tup[3]].append(tup[0])
print(result)
任务是获取主人的名字、姓氏和年龄,并将它们作为字典键,这有效,tup[0],也就是说,它使狗的名字成为字典值,但是该行
else:
result[tup[1], tup[2], tup[3]].append(tup[0])
不向字典键添加另一个值,为什么?
在示例中,Josh King 25 有几只狗,但他只保存了最后一只 - Lassie,我该如何解决此问题并添加所有狗?
我尝试通过追加来完成,因为该值是一个列表,可以通过追加将新值添加到其中,但它不会添加它们
这样你就会更清楚、更容易,不会感到困惑。这段代码的工作原理:
无需检查字典中是否存在键。分配后,词典会自动执行此操作。
如果还没有键,defaultdict会自动为其创建一个新键和一个空列表,并且您可以立即将值添加到列表中。