在Python中将唯一字符串映射到整数

Mus*_*afa 8 python

我有一个清单,比方说 L = ['apple','bat','apple','car','pet','bat'].

我想把它转换成 Lnew = [ 1,2,1,3,4,2].

每个唯一字符串都与一个数字相关联.

我有一个java解决方案使用hashmap,但我不知道如何hashmap在python中使用.请帮忙.

aci*_*obi 14

这是一个快速的解决方案:

l = ['apple','bat','apple','car','pet','bat']
Run Code Online (Sandbox Code Playgroud)

创建一个将所有唯一字符串映射到整数的dict:

d = dict([(y,x+1) for x,y in enumerate(sorted(set(l)))])
Run Code Online (Sandbox Code Playgroud)

将原始列表中的每个字符串映射到其各自的整数:

print [d[x] for x in l]
# [1, 2, 1, 3, 4, 2]
Run Code Online (Sandbox Code Playgroud)