如何按顺序绘制计数器?
How can I plot a counter in order?
我有一个 Python 计数器,它存储元组键和 int 值,看起来像这样:
Counter({(0,): 31118, (160,): 7931, (229,): 7183, (225,): 5668, (48,): 5667, ... , (171,): 19})
里面的项目是按照它们的值的降序排列的,我正在尝试以相同的方式绘制它们。
我尝试使用 plt.bar 而只使用前 10 个值(使用完整集时它的随机顺序相同):
keylist = list()
for key in countersum.keys():
keylist.append(str(key))
plt.bar(keylist[:10], list(countersum.values())[:10])
plt.show()
这给了我下图:
问题是为什么它没有排序,我怎样才能让它按值的降序排列?
IIUC,您需要先根据值对 dict
进行排序,然后如下所示绘制它们:
>>> dct = {(171,): 19, (0,): 31118, (225,): 5668, (160,): 7931, (48,): 5667, (229,): 7183}
>>> srt_dct = dict(sorted(dct.items(), key=lambda item: item[1], reverse=True))
>>> srt_dct
{(0,): 31118,
(160,): 7931,
(229,): 7183,
(225,): 5668,
(48,): 5667,
(171,): 19}
我有一个 Python 计数器,它存储元组键和 int 值,看起来像这样:
Counter({(0,): 31118, (160,): 7931, (229,): 7183, (225,): 5668, (48,): 5667, ... , (171,): 19})
里面的项目是按照它们的值的降序排列的,我正在尝试以相同的方式绘制它们。
我尝试使用 plt.bar 而只使用前 10 个值(使用完整集时它的随机顺序相同):
keylist = list()
for key in countersum.keys():
keylist.append(str(key))
plt.bar(keylist[:10], list(countersum.values())[:10])
plt.show()
这给了我下图:
问题是为什么它没有排序,我怎样才能让它按值的降序排列?
IIUC,您需要先根据值对 dict
进行排序,然后如下所示绘制它们:
>>> dct = {(171,): 19, (0,): 31118, (225,): 5668, (160,): 7931, (48,): 5667, (229,): 7183}
>>> srt_dct = dict(sorted(dct.items(), key=lambda item: item[1], reverse=True))
>>> srt_dct
{(0,): 31118,
(160,): 7931,
(229,): 7183,
(225,): 5668,
(48,): 5667,
(171,): 19}