检查dict 和Counter。 dict() 替换重复的值,所以你需要先反转你的列表。
In [24]: x
Out[24]: ['123', '456', '789', '123']
In [25]: y
Out[25]: ['aaa', 'aaa', 'bbb', 'ccc']
In [26]: x.reverse()
In [27]: y.reverse()
In [28]: x
Out[28]: ['123', '789', '456', '123']
In [29]: y
Out[29]: ['ccc', 'bbb', 'aaa', 'aaa']
In [30]: z=dict(zip(x,y))
In [31]: z
Out[31]: {'123': 'aaa', '456': 'aaa', '789': 'bbb'}
In [32]: from collections import Counter
In [33]: values=z.values()
In [34]: values
Out[34]: dict_values(['aaa', 'bbb', 'aaa'])
In [37]: z = Counter(values)
In [38]: z
Out[38]: Counter({'aaa': 2, 'bbb': 1})
In [39]: z['aaa']
Out[39]: 2
In [40]: z['bbb']
Out[40]: 1
In [41]: z.keys()
Out[41]: dict_keys(['bbb', 'aaa'])
如果您可以选择转换为 numpy 数组,请查看unique
In [39]: import numpy as np
In [40]: x = np.array(['123', '456', '789', '123'])
In [41]: y = np.array(['aaa', 'aaa', 'bbb', 'ccc'])
In [42]: x_unique, x_index = np.unique(x, return_index=True)
In [43]: x_unique
Out[43]:
array(['123', '456', '789'],
dtype='|S3')
In [44]: x_index
Out[44]: array([0, 1, 2])
In [47]: z_unique, z_counts= np.unique(y[x_index],return_counts=True)
In [48]: z_unique
Out[48]:
array(['aaa', 'bbb'],
dtype='|S3')
In [49]: z_counts
Out[49]: array([2, 1])
In [50]: z = dict(zip(z_unique, z_counts))
In [51]: z
Out[51]: {'aaa': 2, 'bbb': 1}