2017-09-15 60 views
0

目前我在每個元組的第二個元素進行排序元組的列表呈現爲柱狀圖:合併元組,並使用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 

最後,我想使這個作爲一個直方圖,但我不知道如何以實現這種整合操作,以及哪種數據結構最適合分順序生成相應的直方圖。

回答

3

你需要將它解析爲每個元組的第二個元素的「平面列表」:

>>> 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

嗯,我只是試了一下,但它似乎沒有認出條件門檻 –