我不能讓我的計數器進行排序/正常顯示Python的排序計數器
我的代碼是
with open('nonweb') as f:
for i in f:
entry.append(i.strip())
counter=Counter(entry)
print counter
for z in counter:
print '%s : %d' % (z, counter[z])
計數器
Counter({'192.168.1.45 UDP 137': 2262, '192.168.1.85 UDP 137': 2262, '192.119.43.56 UDP 53': 78, '192.119.39.68 UDP 53': 78, '192.168.92.223 UDP 10111': 78, '192.168.1.13 UDP 137': 72, '192.167.80.106 TCP 8087': 48, '192.168.1.127 UDP 8083': 48, '192.168.1.129 UDP 8083': 44, '192.218.30.124 UDP 53': 32, '192.77.58.44 TCP 5282': 24, '192.168.1.13 UDP 138': 18, '192.168.1.69 UDP 138': 14, '192.168.1.85 UDP 138': 10, '192.168.1.57 UDP 138': 10, '192.168.1.33 UDP 138': 10, '192.168.1.45 UDP 138': 10, '192.168.1.92 UDP 138': 10, '192.168.1.97 UDP 138': 10, '192.168.1.79 UDP 138': 10, '192.168.1.60 UDP 138': 10, '192.168.1.32 UDP 138': 10, '192.168.1.18 UDP 138': 10, '192.168.1.58 UDP 138': 10, '192.168.1.95 UDP 138': 10, '192.168.1.19 UDP 138': 10, '192.168.1.143 UDP 138': 10, '192.168.1.138 UDP 138': 10, '192.168.1.99 UDP 138': 10, '192.168.1.139 UDP 138': 10, '192.168.1.96 UDP 138': 10, '192.168.1.140 UDP 138': 10, '192.168.1.137 UDP 138': 10, '192.168.1.59 UDP 138': 10, '192.171.70.154 UDP 53': 6, '216.163.251.236 TCP 42590': 2, '192.168.1.140 TCP 56230': 2})
,但是當我嘗試在一個像樣的格式來顯示它,它不會按照與計數器列表相同的順序進行打印。 (優選不半:結腸)
192.168.1.45 UDP 137 : 2262
192.168.1.85 UDP 137 : 2262
192.168.1.85 UDP 138 : 10
192.168.1.57 UDP 138 : 10
192.168.1.33 UDP 138 : 10
192.168.1.45 UDP 138 : 10
192.168.1.92 UDP 138 : 10
192.168.1.129 UDP 8083 : 44
192.168.1.97 UDP 138 : 10
192.168.1.13 UDP 137 : 72
192.168.1.79 UDP 138 : 10
計數器取決於字典取決於無序哈希表。 – Nils
你在計數器的'repr'中看到的是計數器的內部字典,它沒有排序。如果你想按照排序順序排列內容,請嘗試'Counter.most_common' –
你期望的順序是什麼?首先出現,最大發生次數,最小發生次數,關鍵? – AndreyF