如何从当前索引遍历列表,更新后续元素的键为已删除索引的键
解决方案
首先指出原代码的几个问题:
- 语法错误:Python列表不能直接存储键值对,你需要用字典,或者列表中嵌套单个键值对的字典;
- 变量名混乱:定义了
list1但循环中操作dict1; data应设为字符串"B3",否则会被当作未定义变量报错。
以下是两种场景的实现代码:
场景1:用字典存储数据(推荐)
如果你的数据适合用字典存储,直接修改键名即可:
# 正确定义字典 user_dict = {"B1": "Aman", "B2": "Roshni", "B3": "Utkarsh", "B4": "Kritika", "B5": "Mansi", "B6": "Dimple"} target_key = "B3" # 提取要删除键的数字编号 del_num = int(target_key[1:]) # 删除指定键 del user_dict[target_key] # 生成更新后的字典 updated_dict = {} for key, value in user_dict.items(): key_num = int(key[1:]) # 对编号大于删除值的键,编号减1 if key_num > del_num: new_key = f"B{key_num - 1}" updated_dict[new_key] = value else: updated_dict[key] = value # 按键的编号排序,保证顺序正确 sorted_dict = dict(sorted(updated_dict.items(), key=lambda x: int(x[0][1:]))) print(sorted_dict)
运行结果:
{'B1': 'Aman', 'B2': 'Roshni', 'B3': 'Kritika', 'B4': 'Mansi', 'B5': 'Dimple'}
场景2:用列表嵌套字典存储数据
如果必须用列表结构(每个元素是单个键值对的字典),可以这样实现:
user_list = [{"B1": "Aman"}, {"B2": "Roshni"}, {"B3": "Utkarsh"}, {"B4": "Kritika"}, {"B5": "Mansi"}, {"B6": "Dimple"}] target_key = "B3" # 找到要删除元素的索引 del_index = None for idx, item in enumerate(user_list): if target_key in item: del_index = idx break # 删除目标元素 if del_index is not None: del user_list[del_index] # 遍历后续元素,更新键的编号 for idx in range(del_index, len(user_list)): old_item = user_list[idx] old_key = next(iter(old_item)) old_num = int(old_key[1:]) new_key = f"B{old_num - 1}" user_list[idx] = {new_key: old_item[old_key]} print(user_list)
运行结果:
[{'B1': 'Aman'}, {'B2': 'Roshni'}, {'B3': 'Kritika'}, {'B4': 'Mansi'}, {'B5': 'Dimple'}]
内容的提问来源于stack exchange,提问作者user11784477
相关产品推荐
相关产品推荐

