Python处理list中的重复元素(重命名,统计,删除等)

假设我们有一个python的list:

origin_list=['JS','Java','JS','Ruby','C++',
			'Ruby','Python','Ruby','Python','JS']

我们希望可以对重复元素进行重命名,统计,删除等操作

1)统计重复元素并保存相应的index:

duplicate_dict={'JS': [0,2,9], 
				'Ruby': [3,5,7], 
				'Python': [6,8]}

2)清除重复数据:

no_duplicate_list=['JS','Java','Ruby','C++','Python']

3)重命名重复元素

renamed_list=['JS1','Java','JS2','Ruby1','C++',
			'Ruby2','Python1','Ruby3','Python2','JS3']`

以下为实现代码:

def rename_duplicate(list, print_result=False):
    new_list=[v + str(list[:i].count(v) + 1) if list.count(v) > 1 else v for i, v in enumerate(list)]
    if print_result:
	    print("Renamed list:",new_list)
    return new_list

def clean_duplicate(list,print_result=False):
    no_duplicate_list=[]
    duplicate_list=[]
    duplicate_dict={}
    for ele in list:
        duplicate_list.append(ele)
        if ele not in no_duplicate_list:
            no_duplicate_list.append(ele)
        else:
            ind=len(duplicate_list)-1
            duplicate_dict[ele]=duplicate_dict.get(ele,[list.index(ele)])
            duplicate_dict[ele].append(ind)
    if print_result:
        print('Origin list:',duplicate_list,'\nNew list:',no_duplicate_list,'\nDuplicate dict:',duplicate_dict)
    return duplicate_list,no_duplicate_list,duplicate_dict


origin_list=['JS','Java','JS','Ruby','C++','Ruby','Python','Ruby','Python','JS']
_,no_duplicate_list,duplicate_dict=clean_duplicate(origin_list,True)
renamed_list=rename_duplicate(origin_list,True)

运行结果为:
这里写图片描述

注: 如果仅想统计list中所有元素出现的次数,可以使用Counter()。如果仅想去除重复元素且不在乎顺序,可以直接将原列表转为集合set再转回列表。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python,我们可以使用`os`模块来对文件进行操作。要实现重命名文件夹的MP4文件,可以使用以下步骤: 1. 导入`os`模块 ```python import os ``` 2. 定义重命名函数 ```python def rename_file(folder_path): # 获取文件夹下的所有文件名 file_list = os.listdir(folder_path) # 遍历文件名列表 for file_name in file_list: # 判断文件名是否以'.mp4'结尾 if file_name.endswith('.mp4'): # 构造新的文件名 new_name = file_name.replace('.mp4', '_new.mp4') # 构造文件的完整路径 old_path = os.path.join(folder_path, file_name) new_path = os.path.join(folder_path, new_name) # 重命名文件 os.rename(old_path, new_path) ``` 以上代码,`rename_file`函数接受一个参数`folder_path`,表示需要重命名的文件夹路径。函数,使用`os.listdir`方法来获取文件夹下的所有文件名,然后遍历文件名列表,判断是否以`.mp4`结尾。如果是,则构造新的文件名,将原文件重命名为新的文件名。 3. 调用重命名函数 ```python folder_path = 'path/to/folder' rename_file(folder_path) ``` 在调用重命名函数时,需要将需要重命名的文件夹路径作为参数传递给函数即可。 完整代码示例: ```python import os def rename_file(folder_path): # 获取文件夹下的所有文件名 file_list = os.listdir(folder_path) # 遍历文件名列表 for file_name in file_list: # 判断文件名是否以'.mp4'结尾 if file_name.endswith('.mp4'): # 构造新的文件名 new_name = file_name.replace('.mp4', '_new.mp4') # 构造文件的完整路径 old_path = os.path.join(folder_path, file_name) new_path = os.path.join(folder_path, new_name) # 重命名文件 os.rename(old_path, new_path) folder_path = 'path/to/folder' rename_file(folder_path) ``` 需要注意的是,如果文件夹下有重名的文件,重命名时会覆盖原有的文件,因此在进行文件重命名时需要注意文件名的唯一性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值