Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 将数据输入到以嵌套列表作为值的字典(可能来自文件)_Python 3.x_Dictionary_Input - Fatal编程技术网

Python 3.x 将数据输入到以嵌套列表作为值的字典(可能来自文件)

Python 3.x 将数据输入到以嵌套列表作为值的字典(可能来自文件),python-3.x,dictionary,input,Python 3.x,Dictionary,Input,总之,我需要找到一种有效的方法将我的数据输入到脚本中,最终得到一个如下所示的字典: 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'

总之,我需要找到一种有效的方法将我的数据输入到脚本中,最终得到一个如下所示的字典:

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]的元素数对于字典的每个键都是不同的。我想知道一种更有效的输入数据的方法,而不是将字典硬编码到脚本中。请帮忙

附言。
如果建议是CSV,我如何处理嵌套列表中不同数量的元素。

仅使用上面列出的数据,一种简单的方法是循环遍历所有键和数据

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)

这将满足您的要求,但如果您计划访问此词典中的数据,则必须运行嵌套列表索引可能会有点混乱。

我解决了DictReader的问题。:

我有一个名为“addCss.CSV”的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)