合并元组,并使用Python

问题描述:

目前我在每个元组的第二个元素进行排序元组的列表呈现为柱状图:合并元组,并使用Python

[('0xf2b5b8fb173e371cbb427625b0339f6023f8b4ec3701b7a5c691fa9cef9daf63', 
    '121000'), 
('0xf8f2a397b0f7bb1ff212b6bcc57e4a56ce3e27eb9f5839fef3e193c0252fab26', 
    '121000'), 
('0x8b0fe2b7727664a14406e7377732caed94315b026b37577e2d9d258253067553', 
    '21000'), 
('0x0abe75e40a954d4d355e25e4498f3580e7d029769897d4187c323080a0be0fdd', 
    '21000'), 
('0x8adfe7fc3cf0eb34bb56c59fa3dc4fdd3ec3f3514c0100fef800f065219b7707', 
    '40000'), 
('0x244b29b60c696f4ab07c36342344fe6116890f8056b4abc9f734f7a197c93341', 
    '50000'), 
('0x22c2b6490900b21d67ca56066e127fa57c0af973b5d166ca1a4bf52fcb6cf81c', 
    '90000'), 
('0x8570106b0385caf729a17593326db1afe0d75e3f8c6daef25cd4a0499a873a6f', 
    '90000')] 

我想要做的是巩固这一集,使得在每个元组的第二个元素成为关键,它出现的次数变值,就像这样:

'90000': 2 
'50000': 1 
'40000': 1 
'21000': 2 
'121000': 2 

最后,我想使这个作为一个直方图,但我不知道如何以实现这种整合操作,以及哪种数据结构最适合分顺序生成相应的直方图。

你需要将它解析为每个元组的第二个元素的“平面列表”:

>>> my_list = [('0xf2b5b8fb173e371cbb427625b0339f6023f8b4ec3701b7a5c691fa9cef9daf63', 
      '121000'), 
     ('0xf8f2a397b0f7bb1ff212b6bcc57e4a56ce3e27eb9f5839fef3e193c0252fab26', 
      '121000'), 
     ('0x8b0fe2b7727664a14406e7377732caed94315b026b37577e2d9d258253067553', 
      '21000'), 
     ('0x0abe75e40a954d4d355e25e4498f3580e7d029769897d4187c323080a0be0fdd', 
      '21000'), 
     ('0x8adfe7fc3cf0eb34bb56c59fa3dc4fdd3ec3f3514c0100fef800f065219b7707', 
      '40000'), 
     ('0x244b29b60c696f4ab07c36342344fe6116890f8056b4abc9f734f7a197c93341', 
      '50000'), 
     ('0x22c2b6490900b21d67ca56066e127fa57c0af973b5d166ca1a4bf52fcb6cf81c', 
      '90000'), 
     ('0x8570106b0385caf729a17593326db1afe0d75e3f8c6daef25cd4a0499a873a6f', 
      '90000')] 
>>> flat_list = [x[1] for x in my_list] 

然后你可以使用Counter计算每个元素的外观:

>>> from collections import Counter 
>>> Counter(flat_list) 
Counter({'121000': 2, '21000': 2, '90000': 2, '40000': 1, '50000': 1}) 

编辑

正如你想要的门槛,你可以添加一个条件的列表理解:

flat_list = [x[1] for x in my_list if int(x[1]) > 1000]

PS

Counter是一个字典子类,所以你应该能够做你想做就像字典什么,但你也可以用dict(counter_result)

+0

wow-谢谢你丢 - 这是一个很好的答案!同时我们谈到了这个问题 - 你知道一个修剪所有记录的值低于某个阈值的好方法吗? –

+0

是的,你可以很容易地添加一个条件,检查我的编辑。 –

+0

嗯,我只是试了一下,但它似乎没有认出条件门槛 –