gpt4 book ai didi

查找所有潜在最长序列的pythonic方法

转载 作者:行者123 更新时间:2023-11-28 22:23:34 25 4
gpt4 key购买 nike

所以,我有如下列表

potential_labels = ['foo', 'foo::bar', 'foo::bar::baz', "abc", "abc::cde::def", "bleh"]

desired_output = ['foo::bar::baz', "abc::cde::def", "bleh"]

这是因为..对于根“foo”,“foo::bar::baz”是最长的序列对于“abc”、“abc::cde::def”,对于“bleh”它是“bleh”

是否有任何 python 内置函数可以执行此操作。我觉得 itertools 中几乎有一些东西可以执行此操作,但似乎无法解决这个问题。

最佳答案

选项 1
max + groupby 应该可以做到。

r = [max(g, key=len) for _, g in \
itertools.groupby(data, key=lambda x: x.split('::')[0])]

r
['foo::bar::baz', 'abc::cde::def', 'bleh']

选项 2
一个更简单的解决方案将涉及 collections.OrderedDict:

from collections import OrderedDict

o = OrderedDict()
for x in data:
o.setdefault(x.split('::')[0], []).append(x)

r = [sorted(o[k], key=len)[-1] for k in o]

r
['foo::bar::baz', 'abc::cde::def', 'bleh']

不完全是单行,但什么是 pythonic 毕竟是主观的。

关于查找所有潜在最长序列的pythonic方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46928922/

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