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

В настоящее время я читаю значения из файла и разделяю их как параметр и значение, например. @ id = 7 становится param = @id, value = 7. Я хотел бы использовать переменную param в качестве нового ключа в словаре. Однако он работает не так, как ожидалось. Я использую следующий код.

list1 = {}

with open('C:/Temp/file1.txt') as f:
    lines = f.read().splitlines()

for line in lines:
    middle = line.find("=")
    param = line[:middle]
    value = line[middle+1:]
    list1[param] = value

В этом коде ключ словаря и значение становятся равными 7. Заранее спасибо.

1
добавлено отредактировано
Просмотры: 2
nl ja de
param, _, value = line.partition ('=') .
добавлено автор Karl Knechtel, источник
Я не думаю, что вы используете дикт.
добавлено автор Jakob Bowyer, источник
Вы не выводите параметр, но list1 [param].
добавлено автор Ivar Bonsaksen, источник
Вы не должны изменять причину своей путаницы из вопроса. Как и сейчас, принятый ответ решает проблему, которая больше не находится в вопросе.
добавлено автор Ivar Bonsaksen, источник
Почему бы не использовать print ("param =" + param + ", value =" + value)?
добавлено автор Jun HU, источник

3 ответы

Вы должны определить свой словарь ( d - хорошее имя). Вы можете сделать это следующим образом:

with open('C:/Temp/file1.txt') as f:#
    d = dict(line.strip().split('=', 1) for line in f)

for k,v in d.iteritems():
    print("param = {0}, value = {1}".format(k,v))
3
добавлено

Если вы определяете list1 как dict list1 = {} , то ваш оператор печати неверен.

print("param = " + list1[param] + ", value = " + value)

оба list1 [param] и value будут равны 7., поскольку list1 [param] предоставит вам значение его содержимого, а не его ключ.

Попытайтесь впоследствии взглянуть на словарь, напечатав его.

print(list1)
2
добавлено

Я знаю, что это не то, о чем вы просили, но я бы предложил посмотреть

0
добавлено