计算列表[元组]中的出现次数
Couting occurrences in list[Tuple]
输入:[('Vehicle=Boat', 'Tom'), ('Vehicle=Car', 'Scott'), ('Vehicle=Car', 'Tom'), ('Vehicle=Boat', 'Tom')]
使用以下代码我可以正确地对输入进行分组,但是计算元组中出现的次数给我带来了问题:
def groupBy(seqs, idx=1):
d = dict()
for seq in seqs:
k = seq[idx]
v = d.get(k,tuple()) + (seq[:idx]+seq[idx+1:]) #new dict here where mydict[i] = count.get(i,0) + 1?
d.update({k:v})
return d
Returns:
{'Tom': ('Vehicle=Boat', 'Vehicle=Car', 'Vehicle=Boat'), 'Scott': ('Vehicle=Car')}
这很好,但我希望输出为:
Tom
Vehicle=Boat: 2
Vehicle=Car: 1
Scott
Vehicle=Car: 1
有人能给我指出正确的方向吗?
您只需用手捏碎即可:
data = [('Vehicle=Boat', 'Tom'), ('Vehicle=Car', 'Scott'), ('Vehicle=Car', 'Tom'), ('Vehicle=Boat', 'Tom')]
def groupBy(seqs, idx=0):
d = {}
for seq in seqs:
k = seq[idx]
if k not in d:
d[k] = {}
rest = seq[:idx] + seq[idx+1:]
if rest not in d[k]:
d[k][rest] = 0
d[k][rest] += 1
return d
print( groupBy( data, 1 ) )
输出:
{'Tom': {('Vehicle=Boat',): 2, ('Vehicle=Car',): 1}, 'Scott': {('Vehicle=Car',): 1}}
输入:[('Vehicle=Boat', 'Tom'), ('Vehicle=Car', 'Scott'), ('Vehicle=Car', 'Tom'), ('Vehicle=Boat', 'Tom')]
使用以下代码我可以正确地对输入进行分组,但是计算元组中出现的次数给我带来了问题:
def groupBy(seqs, idx=1):
d = dict()
for seq in seqs:
k = seq[idx]
v = d.get(k,tuple()) + (seq[:idx]+seq[idx+1:]) #new dict here where mydict[i] = count.get(i,0) + 1?
d.update({k:v})
return d
Returns:
{'Tom': ('Vehicle=Boat', 'Vehicle=Car', 'Vehicle=Boat'), 'Scott': ('Vehicle=Car')}
这很好,但我希望输出为:
Tom
Vehicle=Boat: 2
Vehicle=Car: 1
Scott
Vehicle=Car: 1
有人能给我指出正确的方向吗?
您只需用手捏碎即可:
data = [('Vehicle=Boat', 'Tom'), ('Vehicle=Car', 'Scott'), ('Vehicle=Car', 'Tom'), ('Vehicle=Boat', 'Tom')]
def groupBy(seqs, idx=0):
d = {}
for seq in seqs:
k = seq[idx]
if k not in d:
d[k] = {}
rest = seq[:idx] + seq[idx+1:]
if rest not in d[k]:
d[k][rest] = 0
d[k][rest] += 1
return d
print( groupBy( data, 1 ) )
输出:
{'Tom': {('Vehicle=Boat',): 2, ('Vehicle=Car',): 1}, 'Scott': {('Vehicle=Car',): 1}}