初始化(例如在循环之前)将在每个项目中包含字符串和列表的字典的最佳方法是什么?
例如:
dict = [("string1", [1,2]), ("string2", [5,6]),..]
所以:
dict["string1"]
返回:
[1,2]
初始化(例如在循环之前)将在每个项目中包含字符串和列表的字典的最佳方法是什么?
例如:
dict = [("string1", [1,2]), ("string2", [5,6]),..]
所以:
dict["string1"]
返回:
[1,2]
请不要调用变量 dict(或列表或集合等),因为它“掩盖”了现有功能并阻止您使用它们。
data = {
"string1": [1,2],
"string2": [5,6]
}
print data["string1"] # => [1,2]
如果你有点受虐狂,你也可以试试
data = dict([("string1",[1,2]), ("string2", [5,6])])
或(以 cval 为例)
data = dict(zip(strings, numbers))
只需将 传递list
给dict()
函数,它将返回 a dictionary
,并且永远不要dict
用作变量名:
>>> dic = [("string1", [1,2]), ("string2", [5,6])]
>>> dict(dic)
{'string2': [5, 6], 'string1': [1, 2]}
Python 2.7 和 Python 3,字典理解:
data = {entry[0]: entry[1] for entry in data}
或解压你的结构:
data = {k: v for (k, v) in data}
Python 2.6 及之前版本,生成器表达式:
data = dict((entry[0], entry[1]) for entry in data)
或再次解包:
data = dict((k, v) for (k, v) in data)
由于您的数据已经采用 (key, value) 序列的形式,您可以通过将结构传递给 dict 类型来一次性生成 dict,而无需显式 dict 或生成器表达式:
dict(data)
strings = ["string1","string2"]
numbers = [[1, 2], [5, 6]]
data = {k:v for k,v in zip(strings, numbers)}
而且我不建议使用保留字(例如dict
)作为变量名。