从包含Google Drive苍蝇的字典列表中删除项目

时间:2019-05-31 18:35:20

标签: python python-3.x flask google-drive-api

我需要从字典列表中删除一些项目。此列表是通过调用Google Drive Rest Api产生的。

我尝试了几个代码示例,但无法正常工作。我是Python新手。

#this is the Google Api call
theFiles = drive_service.files().list(fields="files(id,name,modifiedTime, size, fileExtension)").execute()

#here I am trying to iterate the results and delete all items that refer to a "temp" file:

for k, v in theFiles.items():
    if v[4]=="tmp":
        del theFiles[k]

我期望包含“ tmp”扩展名的记录将从该列表中删除,但是我无法使其工作。

我认为v[4]应该引用字典的“ fileExtension”字段。但是,当我调试时,我看到v[4]包含整个项目,例如:

{'fileExtension': 'docx', 'id': '1u7zrCm3waGr9CiEmPl...F2acV7NvC', 'modifiedTime': '2019-05-03T18:59:19.000Z', 'name': '~$ LENGUA PROG.docx', 'size': '162'}

请帮助我了解如何编写正确的代码以删除扩展名为“ .tmp”的项目。

2 个答案:

答案 0 :(得分:0)

您可以使用the enumerate()函数来生成索引以及要循环的序列的元素。我认为项目与此类似:

items = [{'fileExtension': 'docx', 'id': '1u7zrCm3waGr9CiEmPl...F2acV7NvC',
 'modifiedTime': '2019-05-03T18:59:19.000Z',
'name': '~$ LENGUA PROG.docx', 'size': '162'}]

因此,您可以删除所有引用“临时”文件的项,如下所示:

for index,item in enumerate(items):
    if item['fileExtension'] =="tmp":
        del items[index]

答案 1 :(得分:0)

感谢你们的帮助,这为我提供了执行此操作的线索。 经过一番研究,我最终使用了理解力:

dicFiles[:]  = [x for x in dicFiles if x['name'].endswith('.tmp')]

就可以了。