Как сделать этот кусок кода чистым и быстрым - PullRequest
2 голосов
/ 09 октября 2019

У меня есть около 20 списков, которые я добавляю в каждую итерацию цикла, если некоторые проверки пройдены. Добавленные значения взяты из вложенного словаря, и, как вы можете себе представить, написание этих одного за другим выглядит ужасно и снижает удобочитаемость. Мой код выглядит примерно так:

list1.append(my_dict['key1']['key2']['key3'])
list2.append(my_dict['key1']['key2']['key4']['key5'])
.
.
.
list19.append(my_dict['key1']['key2']['key4']['key19'])
list20.append(my_dict['key1']['key2']['key4']['key20'])

Я хотел бы просто взять все эти операции добавления и поместить его в функцию, но идея дать кучу списков в функцию, добавляя к ними возвращать их мне кажется неправильным. Я не уверен, что самый питонский способ сделать это.

РЕДАКТИРОВАТЬ: я добавляю этот комментарий ниже, чтобы дать вам, ребята, представление о том, что я извлекаю в списки

"impact" : {
  "baseMetricV2" : {
    "cvssV2" : {
      "version" : "2.0",
      "vectorString" : "AV:N/AC:L/Au:N/C:N/I:N/A:P",
      "accessVector" : "NETWORK",
      "accessComplexity" : "LOW",
      "authentication" : "NONE",
      "confidentialityImpact" : "NONE",
      "integrityImpact" : "NONE",
      "availabilityImpact" : "PARTIAL",
      "baseScore" : 5.0
    },
    "severity" : "MEDIUM",
    "exploitabilityScore" : 10.0,
    "impactScore" : 2.9,
    "obtainAllPrivilege" : false,
    "obtainUserPrivilege" : false,
    "obtainOtherPrivilege" : false,
    "userInteractionRequired" : false
  }

Обратите внимание, что воздействие клавиши относится к key1. Но вопрос, который я задаю, не имеет ничего общего с данными, которые я извлекаю. Я просто чувствую, что давать кучу списков функции, изменять эти списки внутри функции, возвращать и перезаписывать исходные списки на выходе - неправильно. Это скорее вопрос философии кодирования, который я буду применять во многих случаях, а не только в этом конкретном случае.

...