【发布时间】:2016-05-15 04:34:52
【问题描述】:
我想计算一个元组在我的输出“结果”中出现了多少次(我改进了我之前的问题 How to join many “listed” tuples into one tuple in Python?)。
所以我这样做了:
from collections import Counter
liste = [1,2,3,5,10]
liste2 = [[1,2,3,5,10], [1,2], [1,5,10], [3,5,10], [1,2,5,10]]
for elt in liste2:
syn = elt # identify each sublist of liste2 as syn
nTuple = len(syn) # number of elements in the syn
for i in liste:
myTuple = ()
if syn.count(i): # check if an item of liste is in liste2
myTuple = (i, nTuple)
if len(myTuple) == '0': # remove the empty tuples
del(myTuple)
else:
result = [myTuple]
c = Counter(result)
for item in c.items():
print(item)
我得到了这些结果:
((1, 5), 1)
((2, 5), 1)
((3, 5), 1)
((5, 5), 1)
((10, 5), 1)
((1, 2), 1)
((2, 2), 1)
((1, 3), 1)
((5, 3), 1)
((10, 3), 1)
((3, 3), 1)
((5, 3), 1)
((10, 3), 1)
((1, 4), 1)
((2, 4), 1)
((5, 4), 1)
((10, 4), 1)
而不是让一些 elts N 次(例如 ((5, 3), 1) 和 ((10, 3), 1) 出现两次),我想要一个元组(键,值),其中值 = 键出现在“结果”中的次数。
我想得到这样的“结果”:
((1, 5), 1)
((2, 5), 1)
((3, 5), 1)
((5, 5), 1)
((10, 5), 1)
((1, 2), 1)
((2, 2), 1)
((1, 3), 1)
((5, 3), 2)
((10, 3), 2)
((3, 3), 1)
((1, 4), 1)
((2, 4), 1)
((5, 4), 1)
((10, 4), 1)
谢谢
【问题讨论】:
-
Counter应该已经这样做了,那么它们实际上是整数元组还是其他东西? -
对不起,这是一个错误。请阅读'syn'
-
如果 syn.count 是一种查看列表中是否有内容的糟糕方法,而
len(myTuple)永远不会等于字符串