gpt4 book ai didi

python - 按包含字符串的最长元素过滤列表

转载 作者:太空宇宙 更新时间:2023-11-04 10:36:48 27 4
gpt4 key购买 nike

我想过滤包含相同最后 4​​ 位数字的所有项目的列表,我想打印其中最长的。

例如:

lst = ['abcd1234','abcdabcd1234','gqweri7890','poiupoiupoiupoiu7890']
# want to return abcdabcd1234 and poiupoiupoiupoiu7890

在这种情况下,我们打印包含 1234 的元素中较长的元素和包含 7890 的元素中较长的元素。找到包含某个元素的最长元素并不难,但是对列表中的所有项目(不同的 last四位数)似乎很难。

我的尝试是首先使用列表理解和切片来识别所有不同的最后 4 位数字:

ids=[]
for x in lst:
ids.append(x[-4:])
ids = list(set(ids))

接下来,我将按索引搜索列表,使用“max_length”变量和“current_id”来查找每个 id 的最大元素。这显然是非常低效的,并且想知道最好的方法是什么。

最佳答案

使用字典:

>>> lst = ['abcd1234','abcdabcd1234','gqweri7890','poiupoiupoiupoiu7890']
>>> d = {} # to keep the longest items for digits.
>>> for item in lst:
... key = item[-4:] # last 4 characters
... d[key] = max(d.get(key, ''), item, key=len)
...
>>> d.values() # list(d.values()) in Python 3.x
['abcdabcd1234', 'poiupoiupoiupoiu7890']

关于python - 按包含字符串的最长元素过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22886385/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com