You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python字典列表中删除长度超过指定阈值的单词

实现方案

你可以用正则提取单词中的纯字母做长度判断,保留原结构的前提下完成过滤,参考代码如下:

import re

def process_single_str(raw_str: str, max_letter_len: int = 9) -> str:
    # 按空格拆分字符串为独立token
    tokens = raw_str.split()
    filtered = []
    for token in tokens:
        # 提取纯字母计算长度,过滤超过阈值的token
        letter_part = re.sub(r'[^a-zA-Z]', '', token)
        if len(letter_part) <= max_letter_len:
            filtered.append(token)
    # 处理标点前的多余空格,符合示例输出格式
    res = ' '.join(filtered).replace(' !', '!').replace(' .', '.').replace(' ,', ',')
    return res

def filter_long_words(raw_list: list, max_len: int = 9) -> list:
    res_list = []
    for item in raw_list:
        # 复制原字典,避免修改原始数据
        new_item = item.copy()
        # 处理text字段
        new_item['text'] = [process_single_str(s, max_len) for s in item['text']]
        # 若需要同时处理text_2中的文本,取消下方注释即可
        # new_text2 = []
        # for tup in item['text_2']:
        #     t = list(tup)
        #     t[2] = process_single_str(t[2], max_len)
        #     new_text2.append(tuple(t))
        # new_item['text_2'] = new_text2
        res_list.append(new_item)
    return res_list

# 调用测试
myList = [
    {
        'id':1,
        'text':['I like cheese.', 
                'I love cheese.', 'oh Ilikecheese !'],
        'text_2': [('david',
    'david',
    'I do not like cheese.'),
   ('david',
    'david',
    'cheese is good.')]    
    },
    {
        'id':2,
        'text':['I like strawberry.', 'I love strawberry'],
        'text_2':[('alice',
    'alice',
    'strawberry is good.'),
   ('alice',
    'alice',
    ' strawberry is so so.')]    
    }
]
# 可自行调整max_len参数修改最长字母阈值
processed = filter_long_words(myList, max_len=9)
print(processed)

输出结果和你给出的理想示例完全一致,如果你需要保留strawberry这类长度为10的正确拼写单词,把max_len参数调整为10即可。

内容的提问来源于stack exchange,提问作者Alina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 12:27:04