在每个项目中包含字符串和列表的字典初始化(例如在循环之前)的最佳方法是什么?
例如:
dict = [("string1", [1,2]), ("string2", [5,6]),..]
所以:
dict["string1"]
返回:
[1,2]
答案 0 :(得分:2)
请不要调用变量字典(或列表,或设置等),因为它"掩盖了"现有功能并阻止您使用它们。
data = {
"string1": [1,2],
"string2": [5,6]
}
print data["string1"] # => [1,2]
如果你有点像受虐狂,你也可以尝试
data = dict([("string1",[1,2]), ("string2", [5,6])])
或(按照cval&#39的例子)
data = dict(zip(strings, numbers))
答案 1 :(得分:1)
strings = ["string1","string2"]
numbers = [[1, 2], [5, 6]]
data = {k:v for k,v in zip(strings, numbers)}
我不建议使用保留字(例如dict
)作为变量名。
答案 2 :(得分:1)
只需将list
传递给dict()
函数,它就会返回dictionary
,并且永远不会将dict
用作变量名称:
>>> dic = [("string1", [1,2]), ("string2", [5,6])]
>>> dict(dic)
{'string2': [5, 6], 'string1': [1, 2]}
答案 3 :(得分:1)
Python 2.7和Python 3,dict comprehension:
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)
由于您的数据已经是(键,值)序列的形式,您可以通过将结构传递给dict类型而不使用显式的dict或生成器表达式来一次生成一个dict:
dict(data)