2016-04-13 40 views
-1

我在做一个项目,但是有一个问题,我碰到的,而使用字典,更具体怎么添加一个条目如何添加到字典中使用用户输入

thing = {'a':1, 'b':2, 'c':3} 
thing.update(input('add more')) 
print(thing) 

我得到的问题当我尝试添加到这个是:ValueError: dictionary update sequence element #0 has length 1; 2 is required。那么我需要怎样将信息放入字典中才能更新?到目前为止,我尝试过“d [4]”,“d 4”和“d:4”。

+2

'update'需要字典作为一个参数,而不是一个字符串。 –

+0

这些引用仅仅是为了证明我已经尝试过它们,当我输入它们时,我没有包括引号 –

+0

只需分割输入并直接添加它,例如:'k,v = input('add more ')。分裂(); thing [k] = int(v)',那么输入'“d 4”'会导致'thing ['d'] = 4'。 – AChampion

回答

0

如果你的目标是添加一个元素,你可以做这样的事情:

thing['d'] = 4 

替代输入在合适的地方。

+0

事情是我想要求用户自己添加它 –

+0

对。这是执行它的语法(而不是扩展),而无需更多地了解您期望用户输入的样子。您需要解析用户输入(根据您期望他们输入的方式),然后将输入的键替换为“D”,将输入的值替换为“4”。 – Christian

1

您必须使用大括号将您的输入转换为字典({ })。您可以拆分输入,以便您有一个包含您的密钥的字符串和一个包含您的值的字符串。

例如,如果你想增加其赋值为d:4你可以使用字符串input

key, val = your_input.split(':') 
thing.update({key:val}) 

这是因为dict.update功能需要一个字典作为参数。

+0

这将如何工作? '{}'是一个字典字面值,不包含字符串。 – AChampion

+0

@AChampion你是对的,我相应地编辑了我的答案 – colelemonz

+1

'tuple'赋值也非常有用:'key,val = input.split(':')'(尽管我不会使用一个名为'input'的变量) – AChampion

1

您尚未描述用户可以接受的内容,但是,您可以使用ast.literal_eval()。这要求用户输入一个有效的Python字典。

>>> from ast import literal_eval 
>>> thing = {'a':1, 'b':2, 'c':3} 
>>> thing.update(literal_eval(input('add more: '))) 
add more: {'d':4, 'e':5, 'z':26} 
>>> thing 
{'a': 1, 'c': 3, 'z': 26, 'd': 4, 'b': 2, 'e': 5} 

虽然输入不是非常用户友好。

您可以让用户输入空格分隔的键和值,例如a 1 e 5 z 26。然后将其转换成一个字典和执行更新:

>>> thing = {'a':1, 'b':2, 'c':3} 
>>> it = iter(input('add more: ').split()) 
add more: a 10 y 25 
>>> thing.update(dict(zip(it, it))) 
>>> thing 
{'y': '25', 'c': 3, 'b': 2, 'a': '10'} 

或者你可以使用:各项目之间的分隔键和值,用空间:

>>> thing = {'a':1, 'b':2, 'c':3} 
>>> thing.update(dict(s.split(':') for s in input('add more: ').split())) 
add more: a:10 z:26 
>>> thing 
{'a': '10', 'c': 3, 'z': '26', 'b': 2} 
-1
dictionary = {'Big brother':'Onii-chan', 'Big sister': 'Onee-sama', 'Hello': 'Konichiwa', 'Master': 'Sensei', 'Good Morning': 'Ohayo', 'Senior': 'Senpai', 'Ocean': 'Kaiyou/Umi','Darkness': 'Yami', 'Light': 'Hikari', 'Sky':'Sora','x':[1,2]} 

keep_going = 'Y' 


while keep_going == 'y' or keep_going == 'Y': 

print(dictionary.keys()) 

x = input("Pick one out of the list to see the translation in japanese") 

print(dictionary[x]) 

keep_going = input('would you like another one? (Y for Yes): ') 
相关问题