我试图找到"qwerty"键盘中两个字母之间的最小距离,例如,如果我判断字母qw,最小距离应该是1,因为它们在键盘中是在一起的,字母qe的最小距离应该是2,因为它们距离每个字母只有两个位置

我试着编一本字典来表达我的爱好

coords = {
    'qw':1, 'qe':2, 'qr':3, 'qt':4, 'qy':5, 'qu':6, 'qi':7, 'qo':8, 'qp':9, 'qa':1, 'qs':2, 'qd':3, 
    'qf':4, 'qg':5, 'qh':6, 'qj':7, 'qk':8, 'ql':9, 'qz': 2, 'qx':3, 'qc':4, 'qv':5, 'qb':6, 'qn':7, 'qm':8,
    'q1':1, 'q2':1, 'q3':2, 'q4':3, 'q5':4, 'q6':5, 'q7':6, 'q8':7, 'q9':8}

之后,通过这样的操作,找到每两个字母的最小距离值(在中,只对字母q的一侧对进行了此操作)

sentence = 'qw'
grams = [sentence[i:i+N] for i in range(len(sentence)-N+1)]
[coords[i] for i in grams]

推荐答案

我认为保存每个字母的位置和计算距离比手工保存所有可能的字母对要容易得多.

例如,q是(0,0),w是(1,0),a是(0,1),等等.

可以轻松地自动计算彼此之间的距离(我 Select 了manhattan distance,您可以根据需要 Select 距离计算算法)

key_positions = {"q": (0, 0), "w": (1, 0), ...}
def dist(c1, c2):
    pos1 = key_position[c1]
    pos2 = key_position[c2]
    return abs(pos1[0] - pos2[0]) + abs(pos1[1] - pos2[1])

Python相关问答推荐

将列表中的元素替换为收件箱中的元素

在编写要Excel的数据透视框架时修复标题行

更改Seaborn条形图中的x轴日期时间限制

强制venv在bin而不是收件箱文件夹中创建虚拟环境

Polars:使用列值引用when / then表达中的其他列

使可滚动框架在tkinter环境中看起来自然

通过pandas向每个非空单元格添加子字符串

如何使用pytest来查看Python中是否存在class attribution属性?

pyscript中的压痕问题

在Python argparse包中添加formatter_class MetavarTypeHelpFormatter时, - help不再工作""""

实现自定义QWidgets作为QTimeEdit的弹出窗口

连接一个rabrame和另一个1d rabrame不是问题,但当使用[...]'运算符会产生不同的结果

如何在图中标记平均点?

在单个对象中解析多个Python数据帧

如何使用SentenceTransformers创建矢量嵌入?

try 检索blob名称列表时出现错误填充错误""

如何在两列上groupBy,并使用pyspark计算每个分组列的平均总价值

Pandas:计算中间时间条目的总时间增量

Python—压缩叶 map html作为邮箱附件并通过sendgrid发送

PYTHON、VLC、RTSP.屏幕截图不起作用