python利用defaultdict、enumerate将列表中相同名字对应的索引值index放到一起,组成列表,最后整体放到一个列表中:
- #!/usr/bin/env python
- # coding=utf-8
- # 将列表中相同名字对应的索引值放到一起,组成列表,最后整体放到一个列表中
- import itertools
- from collections import defaultdict
-
- str1 = ['名称1','名称1','名称1','名称2','名称1','名称3','名称3']
- activity_index = []
- d = defaultdict(list)
- for k,va in [(v,i) for i,v in enumerate(str1)]:
- d[k].append(va)
- # defaultdict(<class 'list'>, {'名称1': [0, 1, 2, 4], '名称2': [3], '名称3': [5, 6]})
- print(d)
- for val in d.values():
- activity_index.append(val)
- # 结果:[[0, 1, 2, 4], [3], [5, 6]]
- print(activity_index)