Python: добавление элементов в список dict или ассоциативный массив
Я пытаюсь добавить элементы в список dict (ассоциативный массив), но каждый раз, когда он повторяется, массив перезаписывает предыдущий элемент. Так что я просто получаю массив размером 1 с последним прочитанным элементом. Я проверил, что ключи меняются каждый раз.
array=[]
for line in open(file):
result=prog.match(line)
array={result.group(1) : result.group(2)}
любая помощь будет отличной, спасибо =]
3 ответа
Решение
Ваше решение неверно; правильная версия:
array={}
for line in open(file):
result=prog.match(line)
array[result.group(1)] = result.group(2)
Проблемы с вашей версией:
- ассоциативные массивы - это диктанты и пустые диктанты = {}
- массивы - это список, пустой список = []
- Вы указываете массив на новый словарь каждый раз.
Это как сказать:
array={result.group(1) : result.group(2)}
array={'x':1}
array={'y':1}
array={'z':1}
....
массив остается одним элементом dict
array=[]
for line in open(file):
result=prog.match(line)
array.append({result.group(1) : result.group(2)})
Или же:
array={}
for line in open(file):
result=prog.match(line)
array[result.group(1)] = result.group(2)
Может быть, даже более Pythonic:
with open(filename, 'r') as f:
array = dict(prog.match(line).groups() for line in f)
или, если ваш prog
соответствует большему количеству групп:
with open(filename, 'r') as f:
array = dict(prog.match(line).groups()[:2] for line in f)