当前位置: 首页 > 知识库问答 >
问题:

如何在列表中删除多个字典中的键python[duplicate]

阎宾实
2023-03-14

我有以下示例数据作为Python中的listobject。

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

我如何从这个列表中删除tour_url描述;或者我怎么能只保留名称和leagueid密钥。我试过很多种解决办法,但似乎都不起作用。

第二个问题:我如何过滤这个列表?与MySQL一样:

select *
from table
where leagueid = 1212

请对python像一个新人一样对待我,因为我真的是。

共有3个答案

钱俊楚
2023-03-14

所以你有一个字典的列表。要从字典中删除tournament_url键,我们将使用字典理解

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

在官方python文档中了解更多有关理解的信息

隗星驰
2023-03-14

对于第一个问题:

for item in table:
    item.pop(tournament_url)

关于第二个问题:

[item for item in table if item[leagueid] == 1212]
易宣
2023-03-14

事实上,list没有键,list有索引,dictionary有键。在您的例子中,您有一个字典列表,您需要的是从列表的每个项(字典)中移除一些键(2确切地说:description和tournament_url):

for item in my_list:  # my_list if the list that you have in your question
    del item['description']
    del item['tournament_url']

若要根据某些条件从上面的列表中检索项目,可以执行以下操作:

[item for item in my_list if your_condition_here]

示例:

>>> [item for item in my_list if item['itemdef'] == 10541]
[{'leagueid': 1212, 'itemdef': 10541, 'name': 'Dota 2 Just For Fun'}]

编辑:

若要筛选my_list项以仅检索某些键,可以执行以下操作:

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'}]
 类似资料:
  • 问题内容: 为什么以下旨在删除字典中多个键的表达式无效?(是字典) 用它替换的最最小的表达式是什么? 问题答案: 您不应该 在 这里完全使用列表理解。列表推导非常适合构建值列表,因此不应将其用于一般循环。对副作用使用列表理解会浪费内存,这是对一个完美的列表对象的浪费。 列表推导也是 表达式 ,因此只能包含其他表达式。是一个语句,不能在表达式内使用。 只需使用一个循环: 或使用字典理解来重建字典:

  • 我想从Python字典中删除一些键。键在列表中提供;我到目前为止的代码:

  • 问题内容: 从字典中删除键时,我使用: 有没有一种方法可以做到这一点? 问题答案: 要删除键而不管它是否在字典中,请使用以下两个参数的形式: 如果典中存在,则返回,None否则返回。如果第二个参数未指定(即)并且key不存在,则引发a。 要删除肯定存在的密钥,你还可以使用 如果关键字在字典中不存在,则会引发 。

  • 从字典中删除键时,我使用: 有没有一个简单的方法可以做到这一点?

  • 问题内容: 有一个字典列表,我想删除具有相同键和值对的字典。 对于此列表: 我想退掉这个: 另一个例子: 对于此列表: 我想退掉这个: 问题答案: 尝试这个: 该策略是将字典列表转换为元组列表,其中元组包含字典项。由于可以对元组进行散列,因此你可以使用删除重复项set(在这里使用,这将是更老的python替代品,然后,使用来从元组中重新创建字典dict。 哪里: l 是原始清单 d 是列表中的词典

  • 问题内容: 如果我有词典列表,请说: 并且我想删除具有2(或name )的字典,以编程方式解决此问题的最有效方法是什么(也就是说,我不知道列表中条目的索引,因此它可以)只是被弹出)。 问题答案: 编辑 :由于对此代码的性能提出了一些疑问(一些基于对Python的性能特征的误解,一些基于超出给定规范的假设,即列表中仅存在一个dict,其key的值为2) id”),我希望在此方面给您保证。 在旧的Li