pyspark 将7位整数转换为唯一的字母数字值,反之亦然

wj8zmpe1  于 2024-01-06  发布在  Spark
关注(0)|答案(2)|浏览(140)

我试图将一个7位数的整数转换为6个字符的字母数字值(全部大写a)。我不想翻译整数值,有没有其他方法可以做到这一点?编码和解码与输出值返回到函数,并再次输入-
| 输入|输出|
| --|--|
| 7200123 |ABC123|
| ABC123| 7200123 |
| 1234567 |12X7S3|
| 12X7S3| 1234567 |
理想情况下,我应该能够传递任何整数,并获得编码的6个字符的字母数字值,并传递6个字符的字母数字值以获得整数

sf6xfgos

sf6xfgos1#

如果你没有“特定的规则”,只有一组值,使用字典。
“default”字典保存你的加密(正向)。反转该字典将给你给予解码,即,带回密钥,提供一个值。
这就要求你的转换表只包含唯一的元组--也就是说,没有值可以在不同的键上出现两次。但我认为这是一个隐含的假设。如果你对同一个输出有两个不同的键,那将是不可逆的,你将无法返回一个唯一的值。

from typing import Dict

translation_dict: Dict[int, str] = {7200123: 'ABC123', 1234567: '12X7S3'}

def encode(number: int) -> str:
    return translation_dict.get(number, None)

def decode(alphanumeric: str) -> int:
    inverse_dict: Dict[str, int] = {v: k for k, v in translation_dict.items()}
    return inverse_dict.get(alphanumeric, None)

字符串

z8dt9xmd

z8dt9xmd2#

所以这就是我如何能够执行它,虽然没有显示6个字符值,但权衡是可以接受的。

import base36

print(base36.dumps(7200345))
print(base36.loads("4abtl"))

字符串


的数据

相关问题