Как я могу автоматически добавлять пары ключ-значение в словарь? например, у меня есть очень длинный файл одного слова на греческом языке и перевод на английский (они разделены знаком «;»): это повторяется для многих строк, и я хотел бы поместить каждую строку (образованную «греческим; перевод") в словаре. Я показываю вам пример:
αἰτέω;ask;beg
αἰτία;responsibility
αἰτιάομαι;accuse;censure
И я хочу:
dict = {'αἰτέω': 'ask, beg', 'αἰτία': 'responsibility', 'αἰτιάομαι': 'accuse, censure'}
Другой пример может быть:
a bow;un inchino
a cloaklet;un mantello
a coaxing;un lusinghiero
И я хочу:
dict = {'a bow': 'un inchino', 'a cloaklet': 'un mantello', 'a coaxing': 'un
lusinghiero'}
Вы можете помочь мне?
Очень простой способ - просто разделить на '\n' и разделить ';' за
text= 'αἰτέω;ask;beg\nαἰτία;responsibility\nαἰτιάομαι;accuse;censure'.split('\n')
result = dict()
for t in text:
t = t.split(';')
result[t[0]] = t[1]
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
from pprint import pprint
lines = """αἰτέω;ask;beg
αἰτία;responsibility
αἰτιάομαι;accuse;censure
a bow;un inchino
a cloaklet;un mantello
a coaxing;un lusinghiero"""
d = {
line.split(";")[0] : ", ".join(line.split(";")[1:])
for line in lines.splitlines()
}
pprint(d)
Результат:
{'a bow': 'un inchino',
'a cloaklet': 'un mantello',
'a coaxing': 'un lusinghiero',
'αἰτέω': 'ask, beg',
'αἰτία': 'responsibility',
'αἰτιάομαι': 'accuse, censure'}
Как вы используете «для строки в lines.splitlines ()»? потому что это дало мне ошибку. Я адаптировал ваше предложение, но не могу понять, как интегрировать и эту последнюю часть. Я сделал так: с open('filename', 'r', encoding = "utf-8") как testo: для строки в testo: d = {line.split(";")[0] : ", ". присоединиться (line.split (";") [1:])} печать (г)
Я только что запустил этот фрагмент. Может быть, попробуйте вставить эту строку во 2-ю строку файла: # -- coding:utf-8 --
Извините, а если у меня есть: ручка манилья?
Пожалуйста, уточните, указав новое значение строк и ожидаемый результат.
Код остался без изменений (я обновил фрагмент).
Idk, но, например, это дало мне: {'a': ' ', 'bow': 'un inchino'}
Вероятно, это связано с тем, что вы используете .split() вместо split(";")/splitlines(). В этом основное отличие моего решения от решения Васифа Хасана.
Используйте понимание dict, не используйте dict в качестве имени переменной:
s='''αἰτέω;ask;beg
αἰτία;responsibility
αἰτιάομαι;accuse;censure'''
mydict = {x.split(';')[0]: ', '.join(x.split(';')[1:])for x in s.split()}
Извините, а если у меня есть: ручка манилья?
Если у вас есть CSV-файл, вы в конечном итоге имеете в виду это?
def csv_dict_list(variables_file):
reader = csv.DictReader(open(variables_file, 'rb'))
dict_list = []
for line in reader:
dict_list.append(line)
return dict_list
Покажите, что вы уже пробовали, как правильно отформатированный код в вопросе.