Python如何从for循环中的字典列表中删除空行?

时间:2015-05-04 15:58:34

标签: python dictionary

我有一个名为"行的字典列表。"但是,此列表包含一些空值的字典(标记为"无")。如何找到遍历每一行的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'}]

3 个答案:

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

虽然如果可以的话,最好是防止首先将这些坏行放入您的列表中!