我需要从字典列表中删除一些项目。此列表是通过调用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”的项目。
答案 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')]
就可以了。