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

如何用Python对AWS S3提取的重复值去重并生成唯一值列表?

如何从S3提取的重复值中生成唯一值列表?

问题背景

我通过以下代码从AWS S3中提取了一些值:

for my_bucket_files in bucket_name.objects.all():
    split_objects = my_bucket_files.key.split('/')
    single_split_objects = split_objects[0]
    print(single_split_objects)

代码输出包含大量重复项,部分值还带首尾空格:

air squat 
air squat
air squat
air squat
push up
push up 
push up
push up
lunges 
lunges
lunges
bench press
bench press
bench press 

我需要处理这些值,得到一个包含唯一值的可复用列表,格式如下:

air squat
push up
lunges
bench press

解决方案

方法1:用集合快速去重(推荐)

集合天然支持自动去重,先收集所有清理后的值到集合,再转成有序列表即可:

unique_items = set()

for my_bucket_files in bucket_name.objects.all():
    split_objects = my_bucket_files.key.split('/')
    # 清理首尾空格,避免带空格和不带空格的字符串被当成不同项
    cleaned_item = split_objects[0].strip()
    unique_items.add(cleaned_item)

# 转成有序列表(按字母排序,可选)
unique_list = sorted(unique_items)

# 打印或复用这个列表
for item in unique_list:
    print(item)

方法2:手动判断去重(保留插入顺序)

如果需要严格保留元素第一次出现的顺序(比如和S3中首次出现的顺序一致),可以用列表判断是否已存在:

unique_list = []

for my_bucket_files in bucket_name.objects.all():
    split_objects = my_bucket_files.key.split('/')
    cleaned_item = split_objects[0].strip()
    if cleaned_item not in unique_list:
        unique_list.append(cleaned_item)

# 打印结果
for item in unique_list:
    print(item)

方法3:用字典实现有序去重(Python 3.7+)

Python 3.7及以上版本的字典会保留键的插入顺序,利用这个特性也能实现去重:

unique_dict = {}

for my_bucket_files in bucket_name.objects.all():
    split_objects = my_bucket_files.key.split('/')
    cleaned_item = split_objects[0].strip()
    unique_dict[cleaned_item] = None  # 值无关紧要,只利用键的唯一性

# 提取字典的键作为唯一列表
unique_list = list(unique_dict.keys())

for item in unique_list:
    print(item)

关键注意点

原输出中的字符串存在首尾空格(比如air squat 和air squat),必须用.strip()清理掉,否则去重会不彻底,导致同一个项被当成不同元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:35:29