是否有一个很好的习惯用于添加新列表或附加到字典中的列表(如果存在)?

Joh*_*ter 4 python dictionary idioms

这是我第二次实现这样的东西,我怀疑必须有一个更好的(阅读:更pythonic)方式来做到这一点:

phone_book = {}

def add_number(name,number):
  if name in phone_book:
    phone_book['name'].append(number)
  else:
    phone_book['name'] = [number]
Run Code Online (Sandbox Code Playgroud)

我意识到代码可能会通过条件赋值变得更简洁,但我怀疑可能有更好的方法来解决这个问题.我只对缩短代码感兴趣.

Dav*_*d Z 8

是的,你可以使用defaultdict.使用此dict子类,当您访问字典中的元素时,如果某个值尚不存在,它将使用您指定的构造函数自动创建一个值.

from collections import defaultdict
phone_book = defaultdict(list)

def add_number(name, number):
    phone_book[name].append(number)
Run Code Online (Sandbox Code Playgroud)


Pio*_*sen 7

使用dictsetdefault是这样的:

phone_book.setdefault('name', []).append(number)
Run Code Online (Sandbox Code Playgroud)