以下代码连接到AWS S3存储桶并返回S3存储桶中的对象列表。我正在尝试通过选择对象的部分值(即['1', '0', '3', '2', '5', '4', '9', '8’], ['1', '0', '3', '2', '5', '4', '7', '9', '8’]
)来创建原始列表中的唯一列表。我已声明“batchID"作为数组。当我使用set()返回唯一时值返回每个值中的唯一数字。例如:def __init__(self, aws_access_key_id, aws_secret_access_key, aws_bucket_to_download, use_ssl):
self.run_id = []
self.batchID = []
self._aws_connection = S3Connection(aws_access_key_id, aws_secret_access_key, is_secure = use_ssl)
self._runId(aws_bucket_to_download)
def _runId(self,aws_bucket_to_download):
if not self._bucketExists(aws_bucket_to_download):
self._printBucketNotFoundMessage(aws_bucket_to_download)
else:
bucket = self._aws_connection.get_bucket(aws_bucket_to_download)
for s3_file in bucket.list(prefix='Download/test_queue1/'):
batchID = str((s3_file.name).split("/"))[32:-13]
#a = set(batchID)
#batchID = list(a)
print batchID
#newList = list(set(batchID))
#print newList`
等因此它在列表中垂直地重复删除。我期望值是唯一的。请参阅下面的预期输出。我也尝试过使用嵌套" for循环"并使用"不在“返回唯一值但它不起作用,它仍然是垂直而不是水平删除重复。任何人都可以帮助。谢谢你提前。
144019080231459
144019080231459
144019800231759
144019800231759
输出:
144019080231459
144019800231759
预期产量: {{1}}
答案 0 :(得分:0)
我认为您正在询问如何删除重复的批次ID。为什么不在检索时将每个批次ID添加到列表中,如果它已经在列表中,则忽略它,例如:
batchIDlist = []
for s3_file in bucket.list(prefix='Download/test_queue1/'):
batchID = str((s3_file.name).split("/"))[32:-13]
if batchID not in batchIDlist:
batchIDlist.append(batchID)
这也会使项目保持与首次找到的顺序相同。