Python如何从for循环中的字典列表中删除空行?
我有一个名为“行”的字典列表。但是,这个列表包含一些空值的字典(标记为“无”)。如果在名为“lat”的键中发现“None”,如何编写一个遍历每一行并删除整行的for循环 这是我的字典列表(“行”)。我想写一个for循环,删除第一行,因为'lat'值是'None'。任何帮助都将不胜感激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
[{'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)
只是看起来好一点;)