我有一個列表,分別包含一個人的姓名,年齡和身份證。 我想計算列表中給定id的出現次數。Python計數發生返回0
當我嘗試:
alist=[(('john', 37), 8),(('john', 37), 8)]
count_ID=alist.count(8)
print count_ID
我收到:
count_ID returns 0
我希望它在這個例子中返回2,因爲列表中有2項具有ID = 8。我怎樣才能解決這個問題?
我有一個列表,分別包含一個人的姓名,年齡和身份證。 我想計算列表中給定id的出現次數。Python計數發生返回0
當我嘗試:
alist=[(('john', 37), 8),(('john', 37), 8)]
count_ID=alist.count(8)
print count_ID
我收到:
count_ID returns 0
我希望它在這個例子中返回2,因爲列表中有2項具有ID = 8。我怎樣才能解決這個問題?
嘗試此代替:
alist = [ (('john', 37), 8), (('john', 37), 8) ]
sum(1 for x in alist if x[1] == 8)
你必須指定某種方式使id
字段存在如在元組中的第二元件,然後篩選出只與id == 8
那些元組和最後總結1爲每一個該被發現 - 或者我們可以找出結果列表的長度,但是爲什麼當一個發生器足夠時創建一個臨時列表?
正如在評論中指出,這也適用:
sum(x[1] == 8 for x in alist)
上面的代碼中工作,因爲在比較x[1] == 8
一個True
值計算結果爲1
和False
計算結果爲0
。
alist.count(8)
只會工作,如果8
是的alist
元素:
>>> alist = [(('john', 37), 8),(('john', 37), 8)]
>>> 8 in alist
False
8
,但是,是列表的第一個元素的元素:
>>> 8 in alist[0]
True
如此算數您必須檢查8
是否在alist
的每個元素中:
>>> sum(i[1] == 8 for i in alist)
2
該列表必須扁平。 Python不計算嵌套列表。所以它會是:
alist=[(('john', 37), 8),(('john', 37), 8),8,8]
爲Python返回2
這裏是ways到flattern列表
或者只是'總和(X [1] == 0在ALIST X )'。 – lvc
@lvc謝謝,我更新了我的回答 –
謝謝,你們都是對的! –