Python &引用;配对“;或;“匹配”;带字母的数字
我正在尝试将字母表“A-Z”上的字母与数字1-26匹配,将数字0-9与48-57匹配。我知道我可以用ASCII表完成字母表部分,但我想知道Python中是否有一种快速或简单的方法来定义这种行为:Python &引用;配对“;或;“匹配”;带字母的数字,python,python-3.x,Python,Python 3.x,我正在尝试将字母表“A-Z”上的字母与数字1-26匹配,将数字0-9与48-57匹配。我知道我可以用ASCII表完成字母表部分,但我想知道Python中是否有一种快速或简单的方法来定义这种行为: 定义一个字母和数字的列表(为了便于理解,我们称之为列表1) 定义数字列表(列表2) 将第一个列表中的每个项目与第二个列表中相同位置的项目进行分配 其思想是能够传递一个数字列表(List2)并返回列表1中相应的项目 这是对ADS-B数据进行解码,以便识别飞机。更多信息 定义一个字母和数字的列表(为了便
- 定义一个字母和数字的列表(为了便于理解,我们称之为列表1)
- 定义数字列表(列表2)
- 将第一个列表中的每个项目与第二个列表中相同位置的项目进行分配
>>> 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)并返回列表1中相应的项目
你试过什么,它到底有什么问题?这能回答你的问题吗?不要使用多个列表,而是一个字典一些您需要的部分:字符串模块,
itertools.chain
,ASCII的定义使得ord('a')&63==1
,以及一个列表或dict理解。感谢您的反馈,很抱歉回复晚,忙碌的一天!也许字典是一个更好的解决方案,正如我从下面的答案中所看到的,这是正确的方法。再次感谢!对于清单2,只有两种选择:[*范围(1,27),*范围(48,58)]
和[ord(c)&63代表清单1中的c]
这正是我想要的。不记得查找dict()
和zip()
方法。谢谢
>>> 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'}
>>> def lookup(L):
... return ''.join([table[x] for x in L])
...
>>> lookup([1,2,3,48,49])
'ABC01'