У меня есть файл CSV, который я фильтровал в список и сгруппировал. Пример:Python - вложенный словарь. Где ошибка?
52713
['52713', '', 'Vmax', '', 'Start Value', '', '\n']
['52713', '', 'Vmax', '', 'ECNumber', '1.14.12.17', '\n']
['52713', 'O2', 'Km', 'M', 'Start Value', '3.5E-5', '\n']
['52713', 'O2', 'Km', 'M', 'ECNumber', '1.14.12.17', '\n']
52714
['52714', '', 'Vmax', '', 'Start Value', '', '\n']
['52714', '', 'Vmax', '', 'ECNumber', '1.14.12.17', '\n']
['52714', 'O2', 'Km', 'M', 'Start Value', '1.3E-5', '\n']
['52714', 'O2', 'Km', 'M', 'ECNumber', '1.14.12.17', '\n']
Из этого я создать вложенный словарь со структурой:
dict = ID number:{Km:n, Kcat:n, ECNumber:n}
... для каждого идентификатора в списке.
Я использую следующий код, чтобы создать этот словарь
dict = {}
for key, items in groupby(FilteredTable1[1:], itemgetter(0)):
#print key
for subitem in items:
#print subitem
dict[subitem[EntryID]] = {}
dict[subitem[EntryID]]['EC'] = []
dict[subitem[EntryID]]['Km'] = []
dict[subitem[EntryID]]['Kcat'] = []
if 'ECNumber' in subitem:
dict[subitem[EntryID]]['EC'] = subitem[value]
if 'Km' in subitem and 'Start Value' in subitem:
dict[subitem[EntryID]]['Km'] = subitem[value]
#print subitem
Это работает для значения ECNumber, но не значение Km. Он может распечатать строку, показывая, что она идентифицирует значение Km как присутствующее, но не помещает его в словарь.
Пример вывода:
{'Km': [], 'EC': '1.14.12.17', 'Kcat': []}
Любые идеи?
Бен
Почему downvote его, а затем оставить никаких объяснений? Является ли ответ простым? –
Каково содержание 'value'? – Matthias
@Matthias Просто указатель для списка. В этом случае целое число 6. Я попытался заменить значение на 6. Не повезло. –