繁体   English   中英

“配对”或“匹配”数字与字母

[英]“Pairing” or “matching” numbers with letters

我正在尝试将字母“AZ”上的字母与数字 1-26 和数字 0-9 与 48-57 匹配。 我知道我可以用 ASCII 表完成字母部分,但我想知道 Python 中是否有一种快速或简单的方法来定义这种行为:

  • 定义一个字母和数字的列表(为了便于理解,我们称之为 List1)。
  • 定义一个数字列表(List2)
  • 将第一个列表中的每个项目与第二个列表中相同 position 上的项目进行关联。

这个想法是能够传递一个数字列表 (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]

将第一个列表中的每个项目与第二个列表中相同 position 上的项目分配。

这将创建一个数字到字符的字典:

>>> 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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM