如何从列表中提取值以添加到python中的另一个列表

时间:2017-12-06 20:27:06

标签: python

我有以下代码:

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。)

3 个答案:

答案 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])