python - 标记重复列表中的元素
问题描述
有什么好的方法可以做到这一点:
input = ['hi you', 'hello', 'hi you', 'hello', 'good bye']
output = [1, 2, 1, 2, 3]
非常感谢!!
(我刚刚编辑了输入列表。我的案例实际上不是字母列表,而是新列表)
解决方案
最省时的方法是构建从值到第一个遇到的索引的映射:
>>> data = ['a', 'b', 'a', 'b', 'c']
>>> index = {}
>>> for x in data:
... if x not in index:
... index[x] = len(index) + 1
...
>>> index
{'a': 1, 'b': 2, 'c': 3}
然后简单地映射原始数据:
>>> [index[x] for x in data]
[1, 2, 1, 2, 3]
推荐阅读
- java - 如何从运行时钟除以指定变量java获得百分比
- spring - 停止 Spring JMS 侦听器,同时仍允许 JMS 消息发布
- jquery - 为什么我的弹出功能无法按预期工作?
- typescript - 数组中每个通用项的一致类型
- angular - Angular 8 - 404 组件覆盖了其他一些重定向路径
- android - SecurityException: getSerial: 用户 10134 不满足访问设备标识符的要求
- google-data-studio - Data Studio - 您可以在图表中显示 Max Metric 的日期吗?
- c# - 升级到 .NET 472 后出现 BadImageFormatException 错误
- linux - 使用 bash 添加文件名
- c# - Razor Pages 的部分标签助手中的“for”和“model”之间的主要区别是什么?