gpt4 book ai didi

python - 枚举列表中的唯一字符串

转载 作者:太空狗 更新时间:2023-10-30 02:21:00 25 4
gpt4 key购买 nike

免责声明:我不是经验丰富的 Python 用户。

我遇到了一个任务,现在我正试图找出用 Python 完成它的最优雅的方法。

这是任务本身:给定一个 list 字符串返回一个 int 列表(每个 int 从 0 到 N - 1,其中 N 是列表中唯一字符串的数量),其中每个 int 对应于初始列表中的某个字符串。相同的字符串应映射到相同的数字,不同的字符串应映射到不同的数字。

我想到的第一件事似乎“有点”过于复杂:

a = ["a","b","a","c","b","a"]
map(lambda x: dict(map(lambda x: reversed(x), enumerate(set(a))))[x], a)

上面代码的结果:

[0, 2, 0, 1, 2, 0]

最佳答案

您可以使用字典和列表理解:

>>> a = ["a","b","a","c","b","a"]
>>> d = {x:i for i, x in enumerate(set(a))}
>>> [d[item] for item in a]
[0, 2, 0, 1, 2, 0]

保持秩序:

>>> seen = set()
>>> d = { x:i for i, x in enumerate(y for y in a
if y not in seen and not seen.add(y))}
>>> [d[item] for item in a]
[0, 1, 0, 2, 1, 0]

上面的字典理解等同于:

>>> seen = set()
>>> lis = []
for item in a:
if item not in seen:
seen.add(item)
lis.append(item)
...
>>> lis
['a', 'b', 'c']
>>> d = {x:i for i,x in enumerate(lis)}

关于python - 枚举列表中的唯一字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18825824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com