如何从列表python中的多个字典中删除键

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一样对待我,因为我真的是。


在事实list做不有钥匙,list已indices,和dictionary有钥匙。在你的情况,你有一个表,你需要词典,和什么是消除一些键(2、精确描述和URL形式的比赛_)每个项目(词典):你的名单:

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只有一些滤波my_list检索键,你可以做的:

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]


那么什么你已经有一个列表的词典。大tournament_url消除的关键,从词典,我们会使用一个字典comprehension

1
my_list = [{k:v for k, v in d.items() if k != 'tournament_url'} for d in my_list]

阅读更多关于comprehensions在Python的官方文件