对lis中的连接项进行递归迭代

2024-09-28 20:52:25 发布

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

我试图对照有效输出字典的键来检查列表的连接内容。我想先看最长最右边的比赛。作为一种直观的帮助,键输入字典的顺序就是我希望输出的优先顺序。你知道吗

我觉得我的解决方案已经走到一半了,但我已经把代码弄得乱七八糟很久了,我的大脑只是在兜圈子。你知道吗

编辑:septra提供了以下代码,它完成了我希望它完成的90%

foo = ['1','2','3']
bar = ['1','2','2','3']
foobar = ['dog','horse']
foodbar = ['2','3','1']
valid_list = {'1 2 3':'1 2 3','2 3':'2 3','1 2':'1 2','3':'3','2':'2','1':'1'}
def validCheck(check, valid_list):
    for r in range(len(check)):
        key = " ".join(check[r:])
        if key in valid_list:
            return valid_list[key]
print(validCheck(foo, valid_list))
print(validCheck(bar, valid_list))
print(validCheck(foobar, valid_list))
print(validCheck(foodbar, valid_list))

哪个指纹

'1 2 3'
'2 3'
'None'
'1'

相对于

'1 2 3'
'2 3'
'None'
'2 3'

正如在后面的评论中所说,理想情况下,它也会捕获多个具有相同标准的非重叠有效输入,但我准备暂时取消该功能。那样的话

validCheck(['2','3','1','2'], valid_list)

将打印

['1 2','2 3']

倾向于单个较长的产出,而不是多个较短的产出。你知道吗


Tags: key代码innone字典foo顺序check
1条回答
网友
1楼 · 发布于 2024-09-28 20:52:25

这就是你要找的功能吗?你知道吗

def validCheck(check, valid_list):
    all_keys = []
    for r in range(len(check)):
        key = " ".join(check[r:])
        revkey = " ".join(check[-r:-1])

        valid_key = []
        valid_revkey = []

        if key in valid_list:
            valid_key.append(key)
        if revkey in valid_list:
            valid_revkey.append(revkey)

        all_keys.extend(valid_key + valid_revkey)

    return max(all_keys, key=len) if all_keys else None

这应该考虑最长的>;最右边的要求。你知道吗

相关问题 更多 >