我有一个名为"行的字典列表。"但是,此列表包含一些空值的字典(标记为"无")。如何找到遍历每一行的for循环并删除整行,如果找到"无"在名为' lat'?
的键中这是我的词典列表("行")。我想编写一个删除第一行的for循环,因为' lat'价值是“没有”。'任何帮助将不胜感激!
[{'created_at': None, 'userid': None, 'long': None, 'tweetid': None, 'timestamp': None, 'lat': None},
{'created_at': 'Mon May 04 04:35:34 +0000 2015', 'userid': '113503286', 'long': '-87.624387', 'tweetid': '595084326489956352', 'timestamp': '1430714134224', 'lat': '41.852653'},
{'created_at': 'Mon May 04 04:35:46 +0000 2015', 'userid': '2421024865', 'long': '-87.629798', 'tweetid': '595084376632729600', 'timestamp': '1430714146179', 'lat': '41.878114'}]
答案 0 :(得分:3)
如果您是初学者,理解它的一种简单方法是定义一个函数并将其删除。
def deleteNone(rows):
ret = []
for item in rows:
if item.get('lat', None) is None:
pass
else:
ret.append(item)
return ret
rows = deleteNone(rows)
答案 1 :(得分:1)
一种通用的方法是按索引以相反的顺序迭代它。这样可以确保在删除项目后索引仍然正确。通用我的意思是相同的技术适用于任何编程语言。
for n in range(len(list) - 1,-1,-1):
if list[n]['lat'] == None:
list.pop(n)
答案 2 :(得分:1)
filter
的完美工作:
rows = filter(lambda d: d['lat'] is not None, rows)
虽然如果可以的话,最好是防止首先将这些坏行放入您的列表中!