python单词分配_python-给定单词列表,如何将它们放入“家庭...

该博客展示了如何使用Python的itertools.groupby函数和列表推导式按'E'字符出现的位置对单词进行分组。通过两种不同的方法,分别生成了包含'E'和不包含'E'的单词列表,并找到了最大的单词组。这些技巧对于处理字符串数据和进行数据分组很有用。
摘要由CSDN通过智能技术生成

from itertools import groupby

words = ['ALLY', 'BETA', 'COOL', 'DEAL', 'ELSE', 'FLEW', 'GOOD', 'HOPE', 'IBEX']

e_locs = sorted(([c == 'E' for c in w], i) for i, w in enumerate(words))

result = [[words[i] for x, i in g] for k, g in groupby(e_locs, lambda x: x[0])]

结果:

>>> result

[['ALLY', 'COOL', 'GOOD'], ['HOPE'], ['FLEW', 'IBEX'], ['BETA', 'DEAL'], ['ELSE']]

这是一个版本,还可以跟踪ES的位置:

words = ['ALLY', 'BETA', 'COOL', 'DEAL', 'ELSE', 'FLEW', 'GOOD', 'HOPE', 'IBEX']

result = {}

for word in words:

key = ' '.join('E' if c == 'E' else '-' for c in word)

if key not in result:

result[key] = []

result[key].append(word)

结果:

>>> pprint.pprint(result)

{'- - - -': ['ALLY', 'COOL', 'GOOD'],

'- - - E': ['HOPE'],

'- - E -': ['FLEW', 'IBEX'],

'- E - -': ['BETA', 'DEAL'],

'E - - E': ['ELSE']}

要选择最大的家族(使用第一个版本,结果是列表列表):

>>> max(result, key=len)

['ALLY', 'COOL', 'GOOD']

要使用第二个版本选择最大的族,您可以只使用result.values()而不是result,或者使用E位置和族获得元组,您可以使用以下命令:

>>> max(result.items(), key=lambda k_v: len(k_v[1]))

('- - - -', ['ALLY', 'COOL', 'GOOD'])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值