2015-03-12 4 views
-1

У меня есть примерный списокнайти длину строки и хранения в Словаре

a = ['be','see','tree'....] 

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

Atlast, мне нужно сохранить его в словаре.

Например: - raw_inputname = 'jean', то он должен напечатать:

jean be 
jean see 
jean tree 

Я тогда нужно хранить в словаре как: -

{'jean be':'6','jean see':'7','jean tree':'8'} 

Моя кодирование:

a=['be','see','tree'] 
x = raw_input("Enter the query x ") 
for item in a: 
    length =len(item[i] + x) 

Я не уверен, насколько он c orrect, и я не знаю, как хранить его в dict.

+1

как приходит 6,7,8? –

+0

Ну, вам нужно создать dict. Вы изучили, как это сделать? – Iguananaut

+0

Ваш цикл 'for' дает вам каждый элемент в списке' a' напрямую. Нет необходимости использовать 'item [i]', когда вы можете просто использовать 'item' * напрямую *. Начните с 'print (x, item)' и перейдите оттуда. –

ответ

2

Вы можете использовать Dict понимание для сохранения элементов в словаре:

>>> inp=raw_input() 
>>> {inp+' '+i:len(inp+i) for i in a} 
{'jean see': 7, 'jean be': 6, 'jean tree': 8} 

и использовать for цикл для печати пар желание:

>>> for i in a: 
... print inp+' '+i 
... 
jean be 
jean see 
jean tree 

Но как словари не упорядочены вас может использовать collections.OrderedDict для создания заказанного дикта:

>>> from collections import OrderedDict 
>>> D=OrderedDict() 
>>> for k,v in sorted(((inp+' '+i,len(inp+i)) for i in a),key=lambda x:x[1]): 
... D[k]=v 
... 
>>> D 
OrderedDict([('jean be', 6), ('jean see', 7), ('jean tree', 8)]) 
+1

Это не будет печатать желаемый результат, и это не будет полезно для текущего уровня понимания OP. –

+0

@MartijnPieters Да, исправлено! – Kasramvd

1

Ваша ошибка заключается в использовании item[i] (i так или иначе не определено), если у вас есть доступ к item. Проверьте это:

a=['be','see','tree'] 
x = raw_input("Enter the query x ") 
d = dict() 
for item in a: 
    d[x + ' ' + item] = len(x + item) 

print d 
+0

Для создания пустого слова предпочтительнее использовать '{}', а не 'dict()'. –

+0

Я не думаю, что существует общее согласие в отношении '{}' vs 'dict()'. Например, IDE PyCharm поощряет использование варианта конструктора. – Selcuk

+0

Использование функции требует дополнительного глобального поиска имени, литерал не будет. –

0
a=['be','see','tree'] 
somedict = {} 
x = raw_input("Enter the query x ") 
for i in a: 
    neww = x+" "+i 
    print neww 
    somedict[neww] = len(neww) 
print somedict 

Выход:

Enter the query x {'john tree': 9, 'john be': 7, 'john see': 8} 
+0

Где вы печатаете комбинации? –

+0

Отредактировано в соответствии с требованиями ОП. (Не могу поверить, что MartijnPieters прокомментировал мой ответ) – letsc

+1

@letsc он не был бы _The_ MartijnPieters, если бы он не был повсюду в одном месте на теге Python: P – kojiro