Python: суммировать все значения с одним и тем же ключом в json?

#python #json #parsing

#python #json #синтаксический анализ

Вопрос:

У меня есть файл Json, который я прочитал. я бы напечатал сумму ‘total_signatures’.

    {
        "response": [
            {
                
                "domains": [],
                "total_network_connections": 0,
                "total_processes": 0,
                "total_signatures": 0,
               
            },
            {
                "analysis_start_time": "2018-03-05 08:54:07",
                "avdetect": 52,
                "certificates": [],
                "classification_tags": [],
                "domains": [],
                "total_signatures": 55,
                "type": "PE32 executable (GUI) Intel 80386, for MS Windows",
                "type_short": [
                    "peexe",
                    "executable"
                ],
                "verdict": "malicious",
                "vxfamily": "Trojan.Agent"
            },
            {
                "analysis_start_time": "2016-05-18 09:10:50",
                "avdetect": 52,
                "certificates": [],
                "classification_tags": [],
                "total_signatures": 35,

..............
  

Я пытался с этим, но не работает —> AttributeError: объект ‘list’ не имеет атрибута ‘values’

   a = sum(d['total_signatures'] for d in data['response'].values() if d)
  

Как я могу это решить? Спасибо

Комментарии:

1. Ответ на ваш вопрос зависит от структуры json. Пожалуйста, опубликуйте полную информацию.

Ответ №1:

попробуйте это

 json = {...}
sum = 0
for i in json['response']:
    sum  = (i['total_signatures'])
print(sum)
  

выход:

 90
  

Комментарии:

1. рад, что смог помочь

Ответ №2:

Это должно сделать:

 In [48]: d
Out[48]:
{'response': [{'domains': [],
   'total_network_connections': 0,
   'total_processes': 0,
   'total_signatures': 0},
  {'analysis_start_time': '2018-03-05 08:54:07',
   'avdetect': 52,
   'certificates': [],
   'classification_tags': [],
   'domains': [],
   'total_signatures': 55,
   'type': 'PE32 executable (GUI) Intel 80386, for MS Windows',
   'type_short': ['peexe', 'executable'],
   'verdict': 'malicious',
   'vxfamily': 'Trojan.Agent'},
  {'analysis_start_time': '2016-05-18 09:10:50',
   'avdetect': 52,
   'certificates': [],
   'classification_tags': [],
   'total_signatures': 35}]}

In [49]: sum([x['total_signatures'] for x in d['response']])
Out[49]: 90
  

Комментарии:

1. Нет: ( .. у меня эта ошибка -> TypeError: объект ‘int’ не вызывается

2. Возможно, у вас есть имя переменной с именем ‘sum’. Попробуйте следующее: del sum, а затем запустите его снова. Единственной функцией, вызываемой в этом oneliner, является sum . и ошибка, которую вы предлагаете, говорит о том, что вы вызываете переменную типа int как функцию, поэтому она выглядит как sum .

3. он очень, очень большой. могу ли я отправить вам электронное письмо? Нет, у меня нет переменной sum: (