PPC*_*PPC 4 python dictionary python-3.x
我正在寻找一个简短而紧凑的单行代码来从 Python 中的列表初始化字典。是否有等效于下面的两个结构?
dic = {}
for elt in list:
dic[elt.hash] = elt
Run Code Online (Sandbox Code Playgroud)
.
dic2 = {}
defaultValue = 0
for elt in list:
dic2[elt] = defaultValue
Run Code Online (Sandbox Code Playgroud)
我已经看到了Counter第二种情况的使用,但它是一个非常狭窄的情况,我正在寻找通用语法。
实例化字典的三个 Pythonic 解决方案的总结。拥有“单线”解决方案永远不应成为最重要的考虑因素。
1. 预先定义的键和默认值。
不要为每个键设置默认值,而是使用dict.fromkeys. 此外,不要将变量命名为与类相同的名称,例如lst改为使用。
dic2 = dict.fromkeys(lst, 0)
Run Code Online (Sandbox Code Playgroud)
2. 预先定义的默认值,但不是键。
或者,如果您将来要添加更多键,请考虑使用collections.defaultdict,它是 的子类dict:
from collections import defaultdict
dic2 = defaultdict(int)
dic2['newkey'] # returns 0 even not explicitly set
Run Code Online (Sandbox Code Playgroud)
3. 函数关联的键值。
要构建通过函数链接键和值的字典,请使用字典理解,如@OmerB 所详细描述的,例如
{k: f(k) for k in lst} # value function of given keys
{f(v): v for v in lst} # key function of given values
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3841 次 |
| 最近记录: |