如何在Python中将一个列表映射到另一个列表?

21 投票
8 回答
40203 浏览
提问于 2025-04-15 20:10
['a','a','b','c','c','c']

[2, 2, 1, 3, 3, 3]

{'a': 2, 'c': 3, 'b': 1}

8 个回答

8

在Python 2.7及以上版本或者3.1及以上版本中,我们有一个内置的数据结构叫做collections.Counter,可以用来统计一个列表中的元素数量。

>>> l = ['a','a','b','c','c','c']
>>> Counter(l)
Counter({'c': 3, 'a': 2, 'b': 1})

之后我们可以很简单地构建出这样的列表[2, 2, 1, 3, 3, 3]

>>> c = _
>>> [c[i] for i in l]   # or map(c.__getitem__, l)
[2, 2, 1, 3, 3, 3]
12

这段代码应该会得到这个结果:

from collections import defaultdict

myDict = defaultdict(int)

for x in mylist:
  myDict[x] += 1

当然,如果你想要结果中的列表,只需要从字典中获取值(用 mydict.values())。

42

在编程中,有时候我们会遇到一些问题,尤其是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,特别是当我们刚开始学习编程的时候。为了帮助大家更好地理解这些问题,很多人会在网上提问,比如在StackOverflow上。

在这些讨论中,大家会分享自己的经验和解决方案。有时候,问题的答案可能会涉及一些技术细节,但我们可以通过简单的例子和解释来理解它们。这样,即使是编程小白也能慢慢掌握这些知识。

总之,编程的学习过程就是不断提问和寻找答案的过程。遇到问题时,不要害怕去询问,社区中的很多人都乐于助人,愿意分享他们的经验。

>>> 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}
>>>

撰写回答