1

このような初心者の質問をして申し訳ありません。

C++ では、次のようなものを使用できます。

map<string, vector<int>> m
m["A1"].push_back(1); 
m["A1"].push_back(2); 
m["B3"].push_back(3); //etc

問題は、数学プロットでプロットしたいということです。各ベクトルは、文字列値「A1」、「B3」などに従ってソートされます。

Pythonで同様のものを実装できますか? Mathplot でプロットする必要があることに注意してください。したがって、ベクトルへのアクセスは非常に簡単です。

4

2 に答える 2

2

次を使用しDictます。

m = {"A1" : [], "B3" : []}
m["A1"].append(1)
m["A1"].append(2)
m["B3"].append(3)

辞書に最初のものを挿入する必要があることに注意してください。keyそうしないと、 が表示されKeyErrorます。新しい を追加したい場合はkey"A2"ここで、単に次のようにします。

m["A2"] = []

キーに従って辞書をソートするには、以下を使用しますOrderedDict

m = OrderedDict(sorted(m.items(), key = lambda t : t[0]))

もう1つ、python辞書のように、文字列、タプル、intなどの変更不可能なアイテムのみが許可されます。キーの1つとしてlikekeysを持つ辞書を持つことはできません。list[1,2,3]

于 2016-11-26T03:48:59.897 に答える
1

Python では、ハッシュマップに相当するものは a ですDict(実際、ほとんどの実装はハッシュマップですDict)。実装間で確実に順序付けするには、OrderedDict. AListはベクトルに相当します。したがって、必要なのはOrderedDictofListsです。

from collections import OrderedDict

// Create the dictionary
d = {'A1': [1, 2], 'B2': [2, 3]}

// Order it by key
m = OrderedDict(sorted(d.items(), key=lambda t: t[0]))

// Example of appending to one of the lists
m['A1'].append(3)

print(m)

これは印刷されます:

OrderedDict([('A1', [1, 2, 3]), ('B2', [2, 3])])

次のように、リストを含む追加のキーを追加することもできます。

m["B2"] = [2, 3, 5, 7]

次に、を再ソートする必要がありますOrderedDict

マイナーな注意: DictsPython では順序付けされていません。それらはたまたま CPython 3 の非常に新しいバージョンで注文されていますが、それは実装の詳細です。したがって、OrderedDictコードの移植性を確保するために、ここで最も適切なデータ構造です。多くの人が CPython のこの機能に非常に興奮しているため、これについて言及していますが、どこでも動作することが保証されているわけではありません。

于 2016-11-26T03:42:33.107 に答える