很抱歉问这个新手问题。

在C ++中,我可以有以下内容:

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


问题是我想用mathplot将其绘制出来。每个向量将根据其字符串值“ A1”,“ B3”等进行排序。

我可以在python中实现类似的东西吗?
请注意,我将必须使用mathplot进行绘图。因此访问向量应该非常容易。

最佳答案

在Python中,等效于哈希图的是Dict(实际上,大多数Dict的实现都是哈希图)。为了确保跨实现的顺序,您将需要使用OrderedDictList等效于向量。因此,您想要的是OrderedDictLists

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

一个小小的注意事项:Python中的Dicts没有排序;它们恰好在非常新的CPython 3版本中订购,但这是实现细节。因此,OrderedDict是此处最适用的数据结构,以确保您的代码可移植。我之所以这样说是因为许多人对CPython的这一功能感到非常兴奋,但是并不能保证它在任何地方都可以使用。

关于python - python数据结构:map <string,vector <int >>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40814582/

10-13 06:49