преобразование списка строк в кортеж - PullRequest
3 голосов
/ 24 декабря 2011

Здравствуйте, я пытаюсь сделать словарь с помощью Python, Что нужно сделать, так это то, что python читает текстовый файл со значениями внутри, такими как:

good    buono

Я открыл файл с функцией file, заменил вкладки и добавил обратную запятую, чтобы создать список, чтобы он выглядел как

["('good', 'buono')", "('afternoon', 'pomeriggo')",... and so on

но проблема в том, что перевод каждого слова не кортеж, это строка, когда я пытаюсь увидеть 1-й элемент (номер 0), он показывает мне значение как

"('good', 'buono')"

которая является строкой. Мне нужно использовать формулу dict, чтобы я мог преобразовать тип в словарь, но я не могу, потому что это список строк (должен быть список кортежей)

Так как мне преобразовать этот список строк в список кортежей?

Ответы [ 3 ]

4 голосов
/ 24 декабря 2011
with open('input.txt') as f:
     result = map(str.split, f)
     # -> [['good', 'buono'], ['afternoon', 'pomeriggo']]
     d = dict(result)
     # -> {'good': 'buono', 'afternoon': 'pomeriggo'}
4 голосов
/ 24 декабря 2011

Предполагая, что каждая пара слов находится на отдельной строке в вашем файле, вы можете сделать это:

mydict = {line.split()[0]: line.split()[1] for line in myfile}

Это преобразует файл как

good    buono
afternoon   pomeriggo
thanks    grazie

в

{"good": "buono", "afternoon": "pomeriggo", "thanks": "grazie"}

По пути не нужно кортежей.

.split() разбивает входную строку на пробелы, удаляя все пробелы в начале / конце:

>>> "  good\tbuono  \n".split()
['good', 'buono']
1 голос
/ 24 декабря 2011

ast будет работать как предложено @onemach, но вы можете вместо этого читать строки как кортежи.

Фрагмент:

li = []
with open("file.txt", 'r') as f:
    li.append(tuple(f.readline().split('\t')))

Это разделит строку ои поместите его в объект кортежа, который затем добавляется в список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...