0

各アイテムに文字列とリストを含む辞書を(ループの前などに)初期化するための最良の方法は何ですか?

例えば:

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

それで:

dict["string1"]

戻り値:

[1,2]
4

4 に答える 4

2

変数dict(またはlist、setなど)を呼び出さないでください。これは、既存の関数を「覆い隠し」、それらを使用できないようにするためです。

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
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 に答える
1

listdict()関数に渡すだけで、が返され、変数名としてdictionary使用されることはありません。dict

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

Python2.7およびPython3 、dictの理解

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)
于 2012-05-26T20:54:29.217 に答える