3

各x要素の3つのリストがあります。

stat = ["A","B","C"]
X = [1,2,3]
Y = [10,15,20]

いいえ、そのリストからdictを作成したいと思います。ここで、「stat」がキーであり、XとYは、各2つの要素のリストに格納されている値のペアです。結果は次のようになります。

my_dict = {
    "A" : [1,10],
    "B" : [2,15],
    "C" : [3,20]
}

または、my_dict ["A"] ["X"]を使用してインデックスを作成できるように、ネストされたdictにすることもできます。

または、Pythonで「名前付き配列」を取得する他の方法はありますか?

最初の質問に非常に関連する2番目の質問があるので、新しい質問を開く代わりに、ここに追加します。

私は実際にはRの配列に非常に慣れています。したがって、私の質問です。:Pythonの名前付き配列のようなものはありますか?たとえば、列名と行名を表す2つのリストがあります。

columns = ["A","B","C"], rows = ["row_a","row_b","row_c"]

次に、これら2つのリストから配列を作成します。

my_array = columns x rows

次のような名前でインデックスを作成します。

my_array["A","row_b"]

ループ内の「セル」(配列に入力)に値を割り当てます。

Pythonでそのようなことを簡単な方法で行うことは可能ですか?おそらくこれは、文字列でインデックスを使用する辞書でも最適に行われます。

4

3 に答える 3

7
>>> stat = ["A","B","C"]
>>> X = [1,2,3]
>>> Y = [10,15,20]
>>> dict(zip(stat, map(list, zip(X, Y))))
{'A': [1, 10], 'C': [3, 20], 'B': [2, 15]}
于 2012-08-08T10:33:33.417 に答える
3
>>> stat = ["A","B","C"]
>>> X = [1,2,3]
>>> Y = [10,15,20]
>>> {s:[x,y] for s,x,y in zip(stat, X, Y)}
{'A': [1, 10], 'C': [3, 20], 'B': [2, 15]}

使いこなすmy_dict["A"]["X"]にはちょっと違います。

>>> {s:{'X':x, 'Y':y} for s,x,y in zip(stat, X, Y)}
{'A': {'Y': 10, 'X': 1}, 'C': {'Y': 20, 'X': 3}, 'B': {'Y': 15, 'X': 2}}

Python3 構文は、最初の方法で優れています。

>>> stat = ["A","B","C"]
>>> X = [1,2,3]
>>> Y = [10,15,20]
>>> {k:v for k,*v in zip(stat, X, Y)}
{'A': [1, 10], 'C': [3, 20], 'B': [2, 15]}
于 2012-08-08T10:37:29.657 に答える
3

ジェネレーター式の規則:

dict((key, [v1,v2]) for key, v1, v2 in zip(stat, X, Y))
于 2012-08-08T10:38:13.977 に答える