您可以在这里使用
dict.fromkeys()
类方法:
dict.fromkeys(dishes, country)
请注意,除非您打算在所有键之间共享可变值,否则不应在默认值为可变值的情况下使用此功能。
根据文档:
创建一个新字典,其中键来自seq,值设置为value。fromkeys()是一个类方法,返回一个新字典。value默认为None。
这比使用字典推导要快得多;对dishes的循环完全由C代码完成,而字典推导会在Python字节码中执行循环。
如果您的列表将包含200,000个值,则会产生巨大差异:
>>> from timeit import timeit
>>> import random
>>> from string import ascii_lowercase
>>> values = [''.join([random.choice(ascii_lowercase) for _ in range(random.randint(20, 40))]) for _ in range(200000)]
>>> def dictcomp(values):
... return {v: 'default' for v in values}
...
>>> def dictfromkeys(values):
... return dict.fromkeys(values, 'default')
...
>>> timeit('f(values)', 'from __main__ import values, dictcomp as f', number=100)
4.984026908874512
>>> timeit('f(values)', 'from __main__ import values, dictfromkeys as f', number=100)
4.159089803695679
这两种选项在重复100次操作时,时间差近乎一秒钟。
'uk'
的列表似乎非常琐碎,然后你可以像以前一样将其传递给zip
。 - jonrsharpe