这是我第二次实现这样的东西,我怀疑必须有一个更好的(读取:更多pythonic)方式来做到这一点:
phone_book = {}
def add_number(name,number):
if name in phone_book:
phone_book['name'].append(number)
else:
phone_book['name'] = [number]
我意识到使用条件赋值可以使代码更简洁,但我怀疑可能有更好的方法来解决这个问题。我只对缩短代码感兴趣。
答案 0 :(得分:8)
是的,您可以使用defaultdict
。使用此dict
子类,当您访问字典中的元素时,如果某个值尚不存在,它将使用您指定的构造函数自动创建一个。
from collections import defaultdict
phone_book = defaultdict(list)
def add_number(name, number):
phone_book[name].append(number)
答案 1 :(得分:7)
像这样使用dict
的{{3}}:
phone_book.setdefault('name', []).append(number)