How to map one list to another in python?
本问题已经有最佳答案,请猛点这里访问。
1 | ['a','a','b','c','c','c'] |
到
1 | [2, 2, 1, 3, 3, 3] |
号
和
1 | {'a': 2, 'c': 3, 'b': 1} |
1 2 3 4 5 6 | >>> x=['a','a','b','c','c','c'] >>> map(x.count,x) [2, 2, 1, 3, 3, 3] >>> dict(zip(x,map(x.count,x))) {'a': 2, 'c': 3, 'b': 1} >>> |
此编码应给出以下结果:
1 2 3 4 5 6 | from collections import defaultdict myDict = defaultdict(int) for x in mylist: myDict[x] += 1 |
。
当然,如果您希望列表在结果之间,只需从dict(mydict.values())中获取值。
使用
1 2 3 4 5 6 7 | l=["a","a","b","c","c","c"] d={} for i in set(l): d[i] = l.count(i) print d |
。
输出:
1 | {'a': 2, 'c': 3, 'b': 1} |
。
在python≥2.7或≥3.1上,我们有一个内置的数据结构集合。
1 2 3 | >>> l = ['a','a','b','c','c','c'] >>> Counter(l) Counter({'c': 3, 'a': 2, 'b': 1}) |
之后很容易构建
1 2 3 | >>> c = _ >>> [c[i] for i in l] # or map(c.__getitem__, l) [2, 2, 1, 3, 3, 3] |
。
1 2 3 | a = ['a','a','b','c','c','c'] b = [a.count(x) for x in a] c = dict(zip(a, b)) |
我包括了WIM答案。好主意
第二个可能只是
1 | dict(zip(['a','a','b','c','c','c'], [2, 2, 1, 3, 3, 3])) |
号
对于第一个:
L=['A'、'A'、'B'、'C'、'C'、'C']
地图(L.计数,L)
1 2 3 | d=defaultdict(int) for i in list_to_be_counted: d[i]+=1 l = [d[i] for i in list_to_be_counted] |