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

Python如何从for循环中的字典列表中删除空行?,python,dictionary,Python,Dictionary,我有一个名为“行”的字典列表。但是,这个列表包含一些空值的字典(标记为“无”)。如果在名为“lat”的键中发现“None”,如何编写一个遍历每一行并删除整行的for循环 这是我的字典列表(“行”)。我想写一个for循环,删除第一行,因为'lat'值是'None'。任何帮助都将不胜感激 [{'created_at': None, 'userid': None, 'long': None, 'tweetid': None, 'timestamp': None, 'lat': None}, {'cr

我有一个名为“行”的字典列表。但是,这个列表包含一些空值的字典(标记为“无”)。如果在名为“lat”的键中发现“None”,如何编写一个遍历每一行并删除整行的for循环

这是我的字典列表(“行”)。我想写一个for循环,删除第一行,因为'lat'值是'None'。任何帮助都将不胜感激

[{'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'}]

一种通用的方法是按索引的相反顺序对其进行迭代。这样可以确保删除项目后索引仍然正确。我所说的“通用”是指相同的技术可以在任何编程语言中使用

   for n in range(len(list) - 1,-1,-1):
        if list[n]['lat'] == None:
            list.pop(n)

一种通用的方法是按索引的相反顺序对其进行迭代。这样可以确保删除项目后索引仍然正确。我所说的“通用”是指相同的技术可以在任何编程语言中使用

   for n in range(len(list) - 1,-1,-1):
        if list[n]['lat'] == None:
            list.pop(n)

您可以在具有非Falsish
lat
属性时进行筛选:

d = [{'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'}]
d = list(filter(lambda x: x["lat"], d))

您可以在具有非Falsish
lat
属性时进行筛选:

d = [{'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'}]
d = list(filter(lambda x: x["lat"], d))

列表理解是一条路要走

rows = [{'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'}]
rows = [ row for row in rows if row['lat'] is not None ]
你可以看报纸
了解更多信息。

列出理解的方法

rows = [{'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'}]
rows = [ row for row in rows if row['lat'] is not None ]
你可以看报纸
了解更多信息。

如果您是初学者,一个简单的理解方法是定义函数并删除它们

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)

如果您是初学者,一个简单的理解方法就是定义一个函数并删除它们

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)

过滤器的完美工作

rows = filter(lambda d: d['lat'] is not None, rows)

虽然如果可以的话,首先最好不要让那些糟糕的行进入你的列表

过滤器的完美工作:

rows = filter(lambda d: d['lat'] is not None, rows)

虽然如果可以的话,首先最好不要让那些糟糕的行进入你的列表

您是否需要检查
行['lat']是否不是None
?@msemelman,回答得很好,也谢谢您的参考@JohnnyLastre欢迎。您是否需要检查
行['lat']是否为None
?@msemelman,回答很好,也谢谢您的参考资料@欢迎光临。你可以
如果item.get('lat',None)不是None:ret.append(item)
忘记其他。是的,我只是想让它更接近英语,让他更容易理解@padraickenningham谢谢你的评论!!不用担心,
如果item.get('lat',None)不是None:ret.append(item)
只是看起来好一点;)你可以
如果item.get('lat',None)不是None:ret.append(item)
忘记其他的。是的,我只是想让它更接近英语,让他更容易理解@padraickenningham无论如何谢谢你的评论!!不用担心,
如果item.get('lat',None)不是None:ret.append(item)
只是看起来好一点;)