2024-07-08 15:44:02 发布
网友
我有两个列表['AAPL', 'MMM', 'AMAT']和['AMAT', 'AAPL', 'MMM'],我想根据每个字符串在各自列表中的位置创建第三个列表
['AAPL', 'MMM', 'AMAT']
['AMAT', 'AAPL', 'MMM']
例如: AAPL排名第一+第二=共3名,MMM排名第二和第三=共5名,AMAT排名第一和第三=共4名
AAPL
MMM
AMAT
最终列表将是(通过减少累积位置)['AAPL', 'AMAT', 'MMM']
['AAPL', 'AMAT', 'MMM']
我都不知道从哪里开始
就拿一个按累计位置排序
>>> a, b = ['AAPL', 'MMM', 'AMAT'], ['AMAT', 'AAPL', 'MMM'] >>> sorted(a, key=lambda x: a.index(x) + b.index(x)) ['AAPL', 'AMAT', 'MMM']
您可以使用字典保存项目及其索引之和,然后基于索引创建预期列表:
>>> from collections import defaultdict >>> >>> d = defaultdict(int) >>> >>> for (ind1, j), (ind2, t) in zip(enumerate(a), enumerate(b)): ... d[j] += ind1 ... d[t] += ind2 ... >>> sorted(d.keys(), key=lambda x: d[x]) ['AAPL', 'AMAT', 'MMM']
如果列表长度不同,可以使用itertools.zip_longet(在python2 izip_longest)来zip枚举对象
itertools.zip_longet
izip_longest
zip
就拿一个按累计位置排序
您可以使用字典保存项目及其索引之和,然后基于索引创建预期列表:
如果列表长度不同,可以使用
itertools.zip_longet
(在python2izip_longest
)来zip
枚举对象相关问题 更多 >
编程相关推荐