【问题标题】:Delete Key with search only the value JSON/Python 3.3.5删除键,仅搜索值 JSON/Python 3.3.5
【发布时间】:2014-12-07 10:31:45
【问题描述】:

我只想在我的字典中搜索值。我在我的 JSONfile 中得到了这个结构

{
  "Teilnehmer0": {
    "Anzahl Begleitpersonen": "test", 
    "Betreuer": "test", 
    "Keyword": "test", 
    "Nachname": "test", 
    "Name": "test", 
    "Studiengang": ""
  }, 
  "Teilnehmer1": {
    "Anzahl Begleitpersonen": "test1", 
    "Betreuer": "test1", 
    "Keyword": "test1", 
    "Nachname": "test1", 
    "Name": "test1", 
    "Studiengang": "test1"
  }, 
  "Teilnehmer2": {
    "Anzahl Begleitpersonen": "test2", 
    "Betreuer": "test2", 
    "Keyword": "test2", 
    "Nachname": "test2", 
    "Name": "test2", 
    "Studiengang": "test2"
  }
}

那么,我现在如何同时搜索值“名称”、“名称”和“关键字”,当我在键中找到 3 个值时,例如,我搜索键“Teilnehmer2”中的值,我找到了 3 个值,而不是我想从我的 JSONfile 中删除孔键 Teilnehmer2?我不知道,该怎么做:/

【问题讨论】:

  • 您是想实际获取这 3 个值并对其进行处理,还是要删除所有具有“Name”、“Nachname”和“Keyword”的键?

标签: python json dictionary key


【解决方案1】:

这样的事情怎么样:

d = {
  "Teilnehmer0": {
    "Anzahl Begleitpersonen": "test", 
    "Betreuer": "test", 
    "Keyword": "test", 
    "Nachname": "test", 
    "Name": "test", 
    "Studiengang": ""
  }, 
  "Teilnehmer1": {
    "Anzahl Begleitpersonen": "test1", 
    "Betreuer": "test1", 
    "Keyword": "test1", 
    "Nachname": "test1", 
    "Name": "test1", 
    "Studiengang": "test1"
  }, 
  "Teilnehmer2": {
    "Anzahl Begleitpersonen": "test2", 
    "Betreuer": "test2", 
    "Keyword": "test2", 
    "Nachname": "test2", 
    "Name": "test2", 
    "Studiengang": "test2"
  }
}

for key, value in d.items():
  name = value.get('Name')
  nachname = value.get('Nachname')
  keyword = value.get('Keyword')

  # do whatever you want with name, nachname and keyword

  del d[key]

for 语句中,我们使用items() 遍历字典中的键/值对,对于每个值,我们在删除键之前获取“名称”、“名称”和“关键字”使用del statement 的字典。

这是你想要做的吗?

【讨论】:

  • 这将删除所有键
  • 我认为这就是 OP 所追求的(因为提供的所有 3 项都包含“名称”、“名称”和“关键字”)。当 OP 回复我的评论时,我会做出必要的更改。
  • 我不会假设整个 json 文件在看到一个非常小的 sn-p 的基础上是相同的,如果你认为所有的 dicts 都是一样的,那么你就不需要dict.get
【解决方案2】:

如果要删除包含键 "Name", "Nachname","Keyword" 的键/字典

for k,v in d.items():
    if all(x in v for x in ["Name", "Nachname","Keyword"]):
        del d[k]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2017-03-30
    • 2011-02-23
    • 2021-01-22
    • 1970-01-01
    • 2020-03-15
    • 2015-06-07
    相关资源
    最近更新 更多