0

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

例如:

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

所以:

dict["string1"]

返回:

[1,2]
4

4 回答 4

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))
于 2012-05-26T20:48:20.323 回答
1

只需将 传递listdict()函数,它将返回 a dictionary,并且永远不要dict用作变量名:

>>> dic = [("string1", [1,2]), ("string2", [5,6])]
>>> dict(dic)
{'string2': [5, 6], 'string1': [1, 2]}
于 2012-05-26T20:53:52.537 回答
1

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)
于 2012-05-26T20:54:29.217 回答
1
strings = ["string1","string2"]
numbers = [[1, 2], [5, 6]]
data = {k:v for k,v in zip(strings, numbers)}

而且我不建议使用保留字(例如dict)作为变量名。

于 2012-05-26T20:50:09.420 回答