初始化包含字符串和列表的python字典

时间:2012-05-26 20:46:21

标签: python list dictionary

在每个项目中包含字符串和列表的字典初始化(例如在循环之前)的最佳方法是什么?

例如:

dict = [("string1", [1,2]), ("string2", [5,6]),..]

所以:

dict["string1"]

返回:

[1,2]

4 个答案:

答案 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)
相关问题