How to delete keys from multiple dictionaries in a list python
本问题已经有最佳答案,请猛点这里访问。
我将下面的示例数据作为python中的listObject。
1 2 3 4 5 6 7 8 9 10 | [{'itemdef': 10541, 'description': 'Dota 2 Just For Fun tournament. ', 'tournament_url': 'https://binarybeast.com/xDOTA21404228/', 'leagueid': 1212, 'name': 'Dota 2 Just For Fun'}, {'itemdef': 10742, 'description': 'The global Dota 2 league for everyone.', 'tournament_url': 'http://www.joindota.com/en/leagues/', 'leagueid': 1640, 'name': 'joinDOTA League Season 3'}] |
如何从列表中删除说明、巡更URL,或者如何只保留名称和leagueid键。我尝试过各种各样的解决方案,但似乎不起作用。
第二个问题:如何筛选此列表?与MySQL一样:
1 2 3 | select * from table where leagueid = 1212 |
请像对待Python一样对待我,因为我真的是。
在事实
1 2 3 | for item in my_list: # my_list if the list that you have in your question del item['description'] del item['tournament_url'] |
检索项目从安全的标准与以上列出一些你可以做的:
1 | [item for item in my_list if your_condition_here] |
例子:
1 2 | >>> [item for item in my_list if item['itemdef'] == 10541] [{'leagueid': 1212, 'itemdef': 10541, 'name': 'Dota 2 Just For Fun'}] |
编辑:
大items只有一些滤波
1 2 3 4 5 | keys_to_keep = ['itemdef', 'name'] res = [{ key: item[key] for key in keys_to_keep } for item in my_list] print(res) # Output: [{'itemdef': 10541, 'name': 'Dota 2 Just For Fun'}, {'itemdef': 10742, 'name': 'joinDOTA League Season 3'}] |
对于第一个问题:
1 2 | for item in table: item.pop(tournament_url) |
对于第二问题:
1 | [item for item in table if item[leagueid] == 1212] |
那么什么你已经有一个列表的词典。大
1 | my_list = [{k:v for k, v in d.items() if k != 'tournament_url'} for d in my_list] |
阅读更多关于comprehensions在Python的官方文件