Jua*_*nti 222 python dictionary
我想从中得到:
keys = [1,2,3]
Run Code Online (Sandbox Code Playgroud)
对此:
{1: None, 2: None, 3: None}
Run Code Online (Sandbox Code Playgroud)
这是一种pythonic方式吗?
这是一种丑陋的方式:
>>> keys = [1,2,3]
>>> dict([(1,2)])
{1: 2}
>>> dict(zip(keys, [None]*len(keys)))
{1: None, 2: None, 3: None}
Run Code Online (Sandbox Code Playgroud)
Tho*_*ers 350
dict.fromkeys([1, 2, 3, 4])
这实际上是一个classmethod,所以它也适用于dict-subclasses(like collections.defaultdict).可选的第二个参数指定用于键的值(默认为None.)
Adr*_*son 240
没有人愿意提供一个字典理解解决方案?
>>> keys = [1,2,3,5,6,7]
>>> {key: None for key in keys}
{1: None, 2: None, 3: None, 5: None, 6: None, 7: None}
Run Code Online (Sandbox Code Playgroud)
Dom*_*ney 55
dict.fromkeys(keys, None)
Run Code Online (Sandbox Code Playgroud)
May*_*hti 12
>>> keyDict = {"a","b","c","d"}
>>> dict([(key, []) for key in keyDict])
Run Code Online (Sandbox Code Playgroud)
输出:
{'a': [], 'c': [], 'b': [], 'd': []}
Run Code Online (Sandbox Code Playgroud)
在许多地方要附加任意键默认/初始值的工作流程,你没有需要到哈希每个键单独的时间提前。您可以使用collections.defaultdict. 例如:
from collections import defaultdict
d = defaultdict(lambda: None)
print(d[1]) # None
print(d[2]) # None
print(d[3]) # None
Run Code Online (Sandbox Code Playgroud)
这更有效,它无需在实例化时散列所有密钥。此外,defaultdict是 的子类dict,因此通常不需要转换回常规字典。
对于需要对允许的键进行控制的工作流程,您可以dict.fromkeys按照接受的答案使用:
d = dict.fromkeys([1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
d = {}
for i in keys:
d[i] = None
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
252954 次 |
| 最近记录: |