Я пытаюсь создать dict из списка заголовков, который «связывает» столбцы данных с тем же экспериментом. Например, я хочу обратиться:Python Добавить ключ к Dict условно
headers = ["A_1","A_2","A_3","B_1","B_2","B_3"]
в
cols = { 1 : {'A' : 0, 'B' : 3}, 2: {'A' : 1, 'B' : 5} ... }
Мой код выглядит следующим образом:
cols = {}
headers = ["A_1","A_2","A_3","B_1","B_2","B_3"]
col_number = 0
for header in headers:
run_number = header[-1:]
cols[ run_number ] = {}
if "A_" in header:
cols[ run_number ][ 'A' ] = col_number
if "B_" in header:
cols[ run_number ][ 'B' ] = col_number
col_number += 1
print cols
Этот вывод только последний "B" колонки:
{'1': {'B':3}, '2':{'B':5}... }
ОДНАКО, если я попробую простой эксперимент t в командной оболочке, эта нотация, похоже, хорошо работает ...
cols = {}
cols[1] = {}
cols[1]['A'] = 1
cols[1]['B'] = 2
print cols
>> {'1' : {'A':1,'B':2} }
Почему?
EDIT: Просто нужен еще один набор глаз, я думаю. Проблема была эта линия в петле ...
cols[ run_number ] = {}
Он переписывает COLS [run_number] в пустой Словаре каждый раз, когда колонна из предварительно существующих run_number достигается.
Вы уверены, что последний сегмент работал для вас? Вы назначили ключ '1' со значением пустого' list', но затем вы пытаетесь добавить к этому 'list' со словарной нотацией. Результат также кажется поддельным, поскольку он превратил целочисленный ключ '1' в строку' '1''. – TigerhawkT3
Что значения в dict '{'A': 1, 'B': 5}'? это индексы? если да, то почему не 'B: 4'? – Kasramvd