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

新手上路,请多包涵

我有一个列表,比方说 L = ['apple','bat','apple','car','pet','bat']

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

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

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

原文由 BuggerNot 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 583
2 个回答

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

 l = ['apple','bat','apple','car','pet','bat']

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

 d = dict([(y,x+1) for x,y in enumerate(sorted(set(l)))])

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

 print [d[x] for x in l]
# [1, 2, 1, 3, 4, 2]

原文由 acidtobi 发布,翻译遵循 CC BY-SA 3.0 许可协议

x = list(set(L))
dic = dict(zip(x, list(range(1,len(x)+1))))

>>> [dic[v] for v in L]
[1, 2, 1, 3, 4, 2]

原文由 Colonel Beauvel 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏