如何列出所有可能的3个字母组合目录项()?

2024-05-14 11:20:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个连续的字母检查,我遇到了这个问题,它应该返回键盘上所有的三个字母组合,但是,我不明白我的最后一部分做错了什么,我怎么能让它工作?我只能让它为dict中的key()而不是items()打印3个字母组合。我要查找的结果是“items()”中所有可能的3个字母组合都打印在一个列表中。你知道吗

keyboard = {'line1':'qwertyuiop',
            'line2':'asdfghjkl',
                'line3':'zxcvbnm'}

def consequ(key):
    a = []
    for each_key in key:
        for i in range(len(key[each_key])-2):
            a.append(each_key[i:i+3])
    return a

我通过编写

consequ(keyboard)

输出由以下代码给出:

['lin'、'ine'、'ne1'、'e1'、'1'、''、'、'、'、'、'、'lin'、'ine'、'ne2'、'e2'、'2'、'、'、'、'、'、'lin'、'ine'、'ne3'、'e3'、'3']

想要的输出是:

['qwe'、'wer'、'ert'、'rty'、'tyu'、'yui'、'uio'、'iop'、'asd'、'sdf'、'dfg'、'fgh'、'ghj'、'hjk'、'jkl'、'zxc'、'xcv'、'cvb'、'vbn'、'bnm']


Tags: keyin列表for字母items键盘dict
1条回答
网友
1楼 · 发布于 2024-05-14 11:20:11

如果要存储所有这些键盘组合,必须迭代字典的值。然而,你写下:

a.append(each_key[i:i+3])
#        ^ key of the dictionary

所以你必须重写它:

def consequ(key):
    a = []
    for line in key.values():
        for i in range(len(line)-2):
            a.append(line[i:i+3])
    return a

或更优雅:

def consequ(key):
    a = []
    for line in key.values():
        a += [line[i:i+3] for i in range(len(line)-2)]
    return a

它们产生:

>>> consequ(keyboard)
['zxc', 'xcv', 'cvb', 'vbn', 'bnm', 'asd', 'sdf', 'dfg', 'fgh', 'ghj', 'hjk', 'jkl', 'qwe', 'wer', 'ert', 'rty', 'tyu', 'yui', 'uio', 'iop']

请注意,大多数Python解释器都有无序字典,因此行的顺序可能不同。你知道吗

相关问题 更多 >

    热门问题