Fal*_*gel 1 python dictionary python-2.7
这是一种最佳实践问题。性能很重要。
我有一个字符串列表,字符串的数量不是恒定的数字(可能会因查询而异)。我希望创建一个将这些字符串作为键的字典,并为它们分配一个静态值(该值是常量,并且对于列表中的所有键都相同)。喜欢:
my_keys = ['AKey', 'AnotherKey', 'OneMore']
default_Value = dict({'count':0, 'basePrice': 0})
Run Code Online (Sandbox Code Playgroud)
预期输出:
{'AKey': {'count':0, 'basePrice': 0}, 'AnotherKey': {'count':0, 'basePrice': 0}, 'OneMore': {'count':0, 'basePrice': 0}}
Run Code Online (Sandbox Code Playgroud)
每个值字典 ( {'count':0, 'basePrice': 0}) 必须是一个单独的对象,而不是单个字典对象的引用。
我正在寻找除循环之外的 for东西。
我尝试了以下方法,当密钥数量已知时它可以工作。
dict(zip(my_keys, [dict(), dict(), dict()]))
Run Code Online (Sandbox Code Playgroud)
但由于项目的数量my_keys会发生变化,这种方法会失败。
你无法避免循环;字典理解是从具有可变值的键序列创建字典的最佳实践:
{key: {'count':0, 'basePrice': 0} for key in my_keys}
Run Code Online (Sandbox Code Playgroud)
对于 Python 2.6 及更早版本,请使用生成器表达式和dict()构造函数:
dict((key, {'count':0, 'basePrice': 0}) for key in my_keys)
Run Code Online (Sandbox Code Playgroud)
为了完成起见,对于不可变的默认值,dict.fromkeys()是更好更快的替代方案。