2016-06-17 5 views
-2

мне нужно помощь, пытаясь положить введенную строку в словарьPython - Преобразование строки в словарь

Вход:

Hello my name is Bob Hello Hello 

Фактический выход:

Желаемого результат:

{'Hello' : '1', 'my' : '2', 'name' : '3', 'is' : '4', 'Bob' : '5'} 

Должно записывать одно и то же слово один раз

Мой код до сих пор:

s = input("input sentence: ") 
    file = open("Original.txt", 'w') 
    file.write(s) 
    file.write("\n") 
    file.close() 
    num = int(1,2,3,4,5) 
    dictionary = dict(num(s.split())) 
    file = open("Dictionary.txt", 'a') 
    file.write(dictionary) 
    file.close() 
    f = open("Dictionary.txt", 'r') 
    print(file.read) 
    print(s) 
+1

Попробуйте это: http://stackoverflow.com/questions/988228/converting-a-string-to-dictionary – Nikita

+1

1. Что делает ваш код до сих пор делают, и как это отличается от ваших ожиданий; и 2. что со смешными комментариями? – jonrsharpe

+0

Мне нужно, чтобы номер в словаре не был введен –

ответ

0

Код ниже разбивает предложение на слова и помещает их в dcitionary таким образом, что вы хотите.

>>> string = 'Hello my name is bob' 
>>> string = {v: k for k ,v in enumerate(string.split(), start=1)} 
>>> string 
{'bob': 5, 'is': 4, 'my': 2, 'Hello': 1, 'name': 3} 
>>> 
+0

Нет. Если ввод «Привет, мое имя - это Боб Hello Hello», это вернет ' {'Bob': 5, 'Hello': 7, 'is': 4, 'my': 2, 'name': 3} '. Поскольку он будет обновлять '' Hello ': 1' с '" Hello ": 6' сначала, а затем с' "Hello": 7'. –

+0

@emre. это неопределенное поведение, основанное на OP, оно никогда не указывалось, если необходимо сохранить * первое * слово. –

+0

@Tadhg McDonald-Jensen OP сказал, что желаемый результат: '{'Hello': 1, 'my': 2, 'name': 3, 'is': 4, 'Bob': 5}', но это возвращает '{ 'Hello': 7, 'my': 2, 'name': 3, 'is': 4, 'Bob': 5} ', который не является« желаемым »выходом. –

Смежные вопросы