Ввод данных в словарь (возможно, из файла) с вложенными списками в качестве значений - PullRequest
0 голосов
/ 13 января 2019

Все, мне нужно найти эффективный способ ввода моих данных в мой скрипт, чтобы в итоге появился словарь, который выглядит так:

CSSes_2_add = {
    'Test CSS 1': ['Test CSS 1',['Staging','On Cluster','Test9','Test8', 'Test7', 'Test6', 'Test5',]],
    'Test CSS 2': ['Test CSS 2',['On Cluster','Staging','Test1','Test2', 'Test3', 'Test4', 'Test5']],
    'Auto Registered Devices': ['For Auto Registered Device Templates' ,['Block Toll Fraud']]
}

Обратите внимание, что количество элементов: `CSSes_2_add [x] [1] будет различным для каждого ключа словаря. Вместо того, чтобы жестко закодировать мой словарь в свой сценарий, я хотел бы узнать о более эффективном способе ввода моих данных. Пожалуйста, помогите

P.S. Если предложение CSV, как мне обрабатывать различное количество элементов во вложенном списке.

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Я решил свою проблему с DictReader:

У меня есть входной файл CSV с именем "addCss.csv" со следующим содержимым:

CssName,CssDesc,Partition1,Partition2,Partition3,Partition4,Partition5,Partition6,Partition7,Partition8,Partition9,Partition10,Partition11,Partition12,Partition13,Partition14,Partition15
CSS1,Description for CSS1,On Net,Staging,,,,,,,,,,,,,
CSS2,Description for CSS2, Test1, Test3, Test5,,,,,,,,,,,,
CSS3,Description for CSS3, Partition1, Test9, Test6,,,,,,,,,,,,

Затем я перебираю файл и добавляю данные в свой словарь следующим образом:

with open('addCss.csv', newline='') as css_csv_file:
  css_csv_reader = csv.DictReader(css_csv_file)
  CSSes_2_add = {}

  for css_row in css_csv_reader:
      css_input_outer_list = []
      css_input_nested_list = []
      css_input_outer_list.append(css_row['CssDesc'])
      CSSes_2_add[css_row['CssName']] = css_input_outer_list
      for N in range(1,15):
          n = str(N)
          if css_row['Partition'+n] != '':
              css_input_nested_list.append(css_row['Partition'+n])
      css_input_outer_list.append(css_input_nested_list)
  print(CSSes_2_add)
0 голосов
/ 13 января 2019

Просто используя данные, которые вы перечислили выше, простой способ сделать то, что вы хотите, это просмотреть все ключи и данные.

keys = ['Test CSS 1', 'Test CSS 2', 'Auto Registered Devices']
data_keys = ['Test CSS 1','Test CSS 2','For Auto Registered Device Templates']
d1 = ['Staging','On Cluster','Test9','Test8', 'Test7', 'Test6', 'Test5']
d2 = ['On Cluster','Staging','Test1','Test2', 'Test3', 'Test4', 'Test5']
d3 = ['Block Toll Fraud']
allData = [d1,d2,d3]
d = {}

for key, data_key in zip(keys, data_keys):
    d[key] = [data_key]

for key, data in zip(list(d.keys()), allData):
    d[key].append(data)

Это даст вам то, о чем вы просили, но если вы планируете получить доступ к данным из этого словаря, может возникнуть некоторая путаница при работе с индексами вложенного списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...