各アイテムに文字列とリストを含む辞書を(ループの前などに)初期化するための最良の方法は何ですか?
例えば:
dict = [("string1", [1,2]), ("string2", [5,6]),..]
それで:
dict["string1"]
戻り値:
[1,2]
各アイテムに文字列とリストを含む辞書を(ループの前などに)初期化するための最良の方法は何ですか?
例えば:
dict = [("string1", [1,2]), ("string2", [5,6]),..]
それで:
dict["string1"]
戻り値:
[1,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))
strings = ["string1","string2"]
numbers = [[1, 2], [5, 6]]
data = {k:v for k,v in zip(strings, numbers)}
dict
また、変数名として予約語(など)を使用することはお勧めしません。
list
をdict()
関数に渡すだけで、が返され、変数名としてdictionary
使用されることはありません。dict
>>> dic = [("string1", [1,2]), ("string2", [5,6])]
>>> dict(dic)
{'string2': [5, 6], 'string1': [1, 2]}
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)