Автоматически добавлять пару ключ-значение в словарь

Как я могу автоматически добавлять пары ключ-значение в словарь? например, у меня есть очень длинный файл одного слова на греческом языке и перевод на английский (они разделены знаком «;»): это повторяется для многих строк, и я хотел бы поместить каждую строку (образованную «греческим; перевод") в словаре. Я показываю вам пример:

αἰτέω;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'}

Вы можете помочь мне?

Покажите, что вы уже пробовали, как правильно отформатированный код в вопросе.

Michael Butscher 18.12.2020 17:12
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
72
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Очень простой способ - просто разделить на '\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:])} печать (г)

orsettomorbido 18.12.2020 17:30

Я только что запустил этот фрагмент. Может быть, попробуйте вставить эту строку во 2-ю строку файла: # -- coding:utf-8 --

mando 18.12.2020 17:36

Извините, а если у меня есть: ручка манилья?

orsettomorbido 18.12.2020 17:51

Пожалуйста, уточните, указав новое значение строк и ожидаемый результат.

mando 18.12.2020 17:55

Код остался без изменений (я обновил фрагмент).

mando 18.12.2020 18:09

Idk, но, например, это дало мне: {'a': ' ', 'bow': 'un inchino'}

orsettomorbido 18.12.2020 18:17

Вероятно, это связано с тем, что вы используете .split() вместо split(";")/splitlines(). В этом основное отличие моего решения от решения Васифа Хасана.

mando 18.12.2020 18:27

Используйте понимание dict, не используйте dict в качестве имени переменной:

s='''αἰτέω;ask;beg
αἰτία;responsibility
αἰτιάομαι;accuse;censure'''
mydict = {x.split(';')[0]: ', '.join(x.split(';')[1:])for x in s.split()}

Извините, а если у меня есть: ручка манилья?

orsettomorbido 18.12.2020 17:48

Если у вас есть 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

Другие вопросы по теме