如何删除Python字典中各列表存储的最后两个元素
问题原因
- 索引逻辑错误:你需要删除列表最后两个元素,应使用负索引
-2定位末尾位置,你写的[2:]是从索引2开始截取,对于长度为3的列表只会删除1个元素,最终剩下2个元素,不符合预期。 - 多余的长度判断:你加了
if len(b_dict[value]) > 2的判断,长度小于等于2的列表不会进入处理逻辑,而vehicle对应的值是长度为1的列表,内部存储的是逗号分隔的单个字符串,完全没有被处理,自然得不到["car"]的结果。
解决代码
适配你当前给出的原始字典结构,可直接运行得到预期结果:
b_dict = { "greetings": ["hello", "hey", "hi"], "vehicle": ["car,plane,boat"], "home": ["house", "apartment", "mansion"], "electronics": ["tv", "computer", "laptop"]} def extract_top_words(b_dict): for key in b_dict: val = b_dict[key] # 处理单个逗号分隔字符串的特殊情况 if len(val) == 1 and ',' in val[0]: val = val[0].split(',') # 保留除最后两个元素外的前半部分 b_dict[key] = val[:-2] return b_dict print(extract_top_words(b_dict))
如果你原始字典中的vehicle值是输入失误,本来就是拆分好的列表["car","plane","boat"],可以使用更简洁的写法:
def extract_top_words(b_dict): for key in b_dict: # 直接删除列表末尾两个元素 del b_dict[key][-2:] return b_dict
内容的提问来源于stack exchange,提问作者karl johan
相关产品推荐
相关产品推荐

