我有以下代码:
items = list()
for i in response['Contents']:
items[i].append('s3://' + response['Name'] + '/' + i['Key'])
items[i].append(i['Key'].rsplit('/', 1)[-1])
items[i].append(i['Size'])
response['Contents']
有这样的架构:
{u'LastModified': datetime.datetime(, tzinfo=tzlocal()),
u'ETag': '"tag"',
u'StorageClass': 'STANDARD',
u'Key': u'filepath/1/something.jpeg',
u'Owner':
{u'DisplayName': 'a', u'ID': 'b'},
u'Size': 32}
基本上,我想要一个3值元组[[value1, value2, value3], [value1, value2, value3]...]
的输出。
如何正确提取值?
(我将使用zip
和另一个具有列名的列表来创建一个dict。)
答案 0 :(得分:0)
只需将list
/ tuple
附加到原始列表中即可:
items = []
for i in response['Contents']: # assuming response['Contents'] is a list
items.append([
's3://' + response['Name'] + '/' + i['Key'],
i['Key'].rsplit('/', 1)[-1],
i['Size']
])
答案 1 :(得分:0)
首先,您不能items[i].append()
,因为i
是dict而items
是一个列表(以及其他原因)。也许您应该考虑在for循环中创建一个新列表,附加每个项目,然后将其转换为元组以附加到项目:
items = list()
for contents in response['Contents']:
i = list()
i.append('s3://' + response['Name'] + '/' + contents['Key'])
i.append(contents['Key'].rsplit('/', 1)[-1])
i.append(contents['Size'])
items.append(tuple(i))
答案 2 :(得分:0)
当这个问题公开时我会接受我的意思:我会这样写:
import os
items = []
s1 = 's3://{Name}/{{Key}}'.format(**response)
for i in response['Contents']:
v1 = s1.format(name,**i)
v2 = os.path.basename(i['Key'])
v3 = i['Size']
items.append([v1,v2,v3])