我有一個(gè)這樣的清單清單list1=[['a', '2'] ['a', '1'] ['b', '3'] ['c', '2'] ['b', '1'] ['a', '1']['b', '1'] ['c', '2']['b', '3'] ['b', '1']]我想遍歷此內(nèi)容并找出每個(gè)第一個(gè)項(xiàng)目的編號(hào):a:[2,1,1] b:[3,1,3,1] c:[2,2]最后,它應(yīng)該打印每個(gè)鍵的計(jì)數(shù)并作為字典輸出{'a': 3, 'b':4, 'c':2}不需要輸出中間步驟。
2 回答

30秒到達(dá)戰(zhàn)場(chǎng)
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
絕對(duì)可以將其壓縮,但是您可以創(chuàng)建每個(gè)鍵的字典到每個(gè)值的列表:
d = {}
for key, val in list1:
if key not in d:
d[key] = []
d[key].append(val)
然后將列表推導(dǎo)和dict()構(gòu)造函數(shù)一起用于最終結(jié)果:
d2 = dict((k, len(vallist)) for k, vallist in d.iteritems())

慕田峪9158850
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超7個(gè)贊
使用collections.Counter
:
如果我理解正確,您想知道每個(gè)“鍵”出現(xiàn)的次數(shù)。下面的代碼可以做到這一點(diǎn):
d = Counter(x[0] for x in list1)
添加回答
舉報(bào)
0/150
提交
取消