如何在python中将一个列表映射到另一个列表?
到 及 对于第一个: l=['a','a','b','c','c','c'] 地图(l.计数,l)如何在python中将一个列表映射到另一个列表?,python,Python,到 及 对于第一个: l=['a','a','b','c','c','c'] 地图(l.计数,l) 我已经包括了Wim的答案。好主意第二个主意可能就是 a = ['a','a','b','c','c','c'] b = [a.count(x) for x in a] c = dict(zip(a, b)) 此编码应给出以下结果: >>> x=['a','a','b','c','c','c'] >>> map(x.count,x) [2, 2, 1, 3, 3
我已经包括了Wim的答案。好主意第二个主意可能就是
a = ['a','a','b','c','c','c']
b = [a.count(x) for x in a]
c = dict(zip(a, b))
此编码应给出以下结果:
>>> 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}
>>>
当然,如果您想要中间结果中的列表,只需从dict(mydict.values())中获取值。使用
设置
仅对每个项目进行一次计数,使用列表方法计数
对其进行计数,将其存储在dict
中,并将项目作为键,出现值
d=defaultdict(int)
for i in list_to_be_counted: d[i]+=1
l = [d[i] for i in list_to_be_counted]
输出:
l=["a","a","b","c","c","c"]
d={}
for i in set(l):
d[i] = l.count(i)
print d
关于Python≥2.7或≥3.1,我们有一个内置的数据结构来统计列表
{'a': 2, 'c': 3, 'b': 1}
之后很容易构建[2,2,1,3,3]
>>> l = ['a','a','b','c','c','c']
>>> Counter(l)
Counter({'c': 3, 'a': 2, 'b': 1})
我不明白这个问题。至少添加一行描述会非常有帮助。上周每天都会问这个问题
c=dict(zip(a,b))
应该可以计算c
+1太棒了!我已经更新了我的答案结果看起来不错,但是它有潜在的O(n^2)运行时行为。但是他从来没有说过任何关于性能的事情。。。这就解决了问题,如果效率太低,那是另一个需要解决的问题。没错——但是你有没有意识到会发生什么,你会遇到O(n^2)-陷阱?我经历过,一个简单的算法完全扼杀了程序的性能,因为它恰好是一个更大的数据集,而且算法有这样的行为。放松。您很可能一直在编写O(n^3)和O(2^n)算法,甚至从未注意到它们正在执行。如果出现这些问题,就解决它们。对我来说,这是最容易理解/实现的。您知道它是否比使用collections计数器慢吗?对于这些简单的示例,请同时实现它们并计时。别相信我的猜测。或者更确切地说,根本不在乎速度;您使用Python是为了简单,而不是性能。
from collections import defaultdict
myDict = defaultdict(int)
for x in mylist:
myDict[x] += 1
d=defaultdict(int)
for i in list_to_be_counted: d[i]+=1
l = [d[i] for i in list_to_be_counted]
l=["a","a","b","c","c","c"]
d={}
for i in set(l):
d[i] = l.count(i)
print d
{'a': 2, 'c': 3, 'b': 1}
>>> l = ['a','a','b','c','c','c']
>>> Counter(l)
Counter({'c': 3, 'a': 2, 'b': 1})
>>> c = _
>>> [c[i] for i in l] # or map(c.__getitem__, l)
[2, 2, 1, 3, 3, 3]