2

我对编程比较陌生,对不起,我已经回答了这个问题。

我正在尝试从我从 API 获得的 JSON 中获取特定值。在我进入第一个 {} 并将其保存到列表中后,JSON 看起来像这样。

现在我需要提取所有“术语”值。尝试了很多方法,但我找不到合适的方法。

[
  [
    {
      'id': 292,
      'categories': [
        
      ],
      'terms': [
        {
          'term': 'Erprobung'
        },
        {
          'term': 'Probe'
        },
        {
          'term': 'Prüfung'
        },
        {
          'term': 'Test'
        },
        {
          'term': 'Versuch'
        }
      ]
    },
    {
      'id': 4398,
      'categories': [
        
      ],
      'terms': [
        {
          'term': 'Leistungsnachweis'
        },
        {
          'term': 'Prüfung'
        },
        {
          'term': 'Test'
        }
      ]
    },
    {
      'id': 5752,
      'categories': [
        
      ],
      'terms': [
        {
          'term': 'Klassenarbeit'
        },
        {
          'term': 'Klausur'
        },
        {
          'term': 'Leistungsüberprüfung'
        },
        {
          'term': 'Lernerfolgskontrolle'
        },
        {
          'term': 'Prüfung'
        },
        {
          'term': 'Schularbeit'
        },
        {
          'term': 'Schulaufgabe'
        },
        {
          'term': 'Test'
        },
        {
          'term': 'Arbeit',
          'level': 'umgangssprachlich'
        }
      ]
    },
    {
      'id': 9138,
      'categories': [
        
      ],
      'terms': [
        {
          'term': 'Experiment'
        },
        {
          'term': '(die) Probe aufs Exempel'
        },
        {
          'term': 'Probelauf'
        },
        {
          'term': 'Studie'
        },
        {
          'term': 'Test'
        },
        {
          'term': 'Testballon'
        },
        {
          'term': 'Testlauf'
        },
        {
          'term': 'Trockenlauf'
        },
        {
          'term': 'Trockentest'
        },
        {
          'term': 'Versuch'
        },
        {
          'term': 'Versuchsballon'
        }
      ]
    },
    {
      'id': 6241,
      'categories': [
        
      ],
      'terms': [
        {
          'term': 'Bewährungsprobe'
        },
        {
          'term': 'Feuerprobe'
        },
        {
          'term': 'Feuertaufe'
        },
        {
          'term': 'harte Prüfung'
        },
        {
          'term': 'Lackmustest'
        },
        {
          'term': 'Nagelprobe'
        },
        {
          'term': 'Test'
        }
      ]
    }
  ]
]
4

2 回答 2

2

最简单的方法是使用嵌套列表推导:

>>> [term_dict["term"] for d in my_list for term_dict in d["terms"]]

['Erprobung', 'Probe', 'Prüfung', 'Test', 'Versuch', 'Leistungsnachweis',
'Prüfung', 'Test', 'Klassenarbeit', 'Klausur', 'Leistungsüberprüfung',
'Lernerfolgskontrolle', 'Prüfung', 'Schularbeit', 'Schulaufgabe', 'Test',
'Arbeit', 'Experiment', '(die) Probe aufs Exempel', 'Probelauf', 'Studie',
'Test', 'Testballon', 'Testlauf', 'Trockenlauf', 'Trockentest', 'Versuch',
'Versuchsballon', 'Bewährungsprobe', 'Feuerprobe', 'Feuertaufe', 'harte Prüfung',
'Lackmustest', 'Nagelprobe', 'Test']
于 2021-01-21T04:00:54.917 回答
0

好吧,从头开始后,我已经解决了我的问题。

new_list = []
for list_num in synonym_call:
    # ic(len(list_num))
    # ic(list_num[ITERATE TROUGH HERE]["terms"])
    # ic(list_num[len(list_num) - 1]["terms"])

    list_length = len(list_num) - 1
    while list_length > 0:
        new_list.extend(list_num[list_length - 1]["terms"])
        list_length -= 1

synonym_list = []
for term in new_list:
    synonym_list.append(term["term"])
    
print(synonym_list)

这就是结果:

['Experiment', '(die) Probe aufs Exempel', 'Probelauf', 'Studie', 'Test', 'Testballon', 'Testlauf', 'Trockenlauf', 'Trockentest', 'Versuch', 'Versuchsballon', 'Klassenarbeit', 'Klausur', 'Leistungsüberprüfung', 'Lernerfolgskontrolle', 'Prüfung', 'Schularbeit', 'Schulaufgabe', 'Test', 'Arbeit', 'Leistungsnachweis', 'Prüfung', 'Test', 'Erprobung', 'Probe', 'Prüfung', 'Test', 'Versuch']

我很确定有一种更简单的方法,但现在它可以工作了,我对它非常满意!谢谢大家的帮助!

于 2021-01-21T18:34:46.420 回答