python - 用字母“配对”或“匹配”数字
问题描述
我正在尝试将字母“AZ”上的字母与数字 1-26 和数字 0-9 与 48-57 匹配。我知道我可以用 ASCII 表完成字母部分,但我想知道 Python 中是否有一种快速或简单的方法来定义这种行为:
- 定义一个字母和数字的列表(为了便于理解,我们称之为 List1)。
- 定义一个数字列表(List2)
- 将第一个列表中的每个项目与第二个列表中相同位置的项目关联。
这个想法是能够传递一个数字列表 (List2) 并在 List1 上返回它们的对应项。
这是为了对 ADS-B 数据进行解码以进行平面识别。更多信息在这里。
解决方案
定义一个字母和数字的列表(为了便于理解,我们称之为 List1)。
>>> import string
>>> list1 = string.ascii_uppercase + string.digits
>>> list1
'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
定义一个数字列表 (List2)。
我正在尝试将字母“AZ”上的字母与数字 1-26 和数字 0-9 与 48-57 匹配。
>>> list2 = list(range(1,27))+list(range(48,58))
>>> list2
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57]
将第一个列表中的每个项目与第二个列表中相同位置的项目分配。
这将创建一个数字到字符的字典:
>>> table = dict(zip(list2,list1))
>>> table
{1: 'A', 2: 'B', 3: 'C', 4: 'D', 5: 'E', 6: 'F', 7: 'G', 8: 'H', 9: 'I', 10: 'J', 11: 'K', 12: 'L', 13: 'M', 14: 'N', 15: 'O', 16: 'P', 17: 'Q', 18: 'R', 19: 'S', 20: 'T', 21: 'U', 22: 'V', 23: 'W', 24: 'Y', 25: 'X', 26: 'Z', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5', 54: '6', 55: '7', 56: '8', 57: '9'}
这个想法是能够传递一个数字列表 (List2) 并在 List1 上返回它们的对应项。
>>> def lookup(L):
... return ''.join([table[x] for x in L])
...
>>> lookup([1,2,3,48,49])
'ABC01'
推荐阅读
- reactjs - video.play() 后我听到声音,但视频不工作
- javascript - 使用 setState 提交后清除表单输入
- r - 跨列应用函数
- python - Discord.py 列出机器人所在的所有服务器名称
- python - 在 Python 中使用多个 for 循环 Using Beautiful Soup
- javascript - 由于未定义的属性,循环内的滚动功能不起作用
- docker - 无法从 Docker 容器内请求 ActiveMQ 端口 8161:没有到主机的路由
- git - 我如何知道创建的 GPG 密钥是否带有密码?假设密钥是使用 gpg --gen-key 创建的,没有输入密码
- javascript - 如何用 JavaScript 格式的相同电子邮件替换字符串中的所有电子邮件
- c++ - Opencv的源代码中的注释是错误的吗?