首先我是一个noob.i我正在写一个程序,它会给你一个孩子的关系信息(母亲,父亲,父母双方)。如果你打1,它会问你孩子的名字,然后告诉你孩子的母亲的名字,2除了父亲的名字,3将告诉你父母的名字,4将停止该程序。字典是预定的。这是一般的想法
child2parents = {'andrew': {'father': 'john', 'mother': 'jane'}, 'betsy': {'father': 'nigel', 'mother': 'ellen'}, 'louise': {'father': 'louis', 'mother': 'natalie'}, 'chad': {'father': 'joseph', 'mother': 'mary'}}
x = ""
while x != 4:
choice = int(raw_input("1 = mother, 2 = father 3 = both parents 4 = stop "))
if choice == 1:
childs_name = raw_input("please enter childs name here ")
for i in child2parents:
if i == childs_name:
print ['i']['mother']
我似乎无法使其工作并且没有进一步采用代码,因为我无法获得选项1工作
答案 0 :(得分:1)
在这种情况下,您不需要遍历字典。获得子名称后,您可以使用它来使用child2parents[child_name]
或child2parents.get(child_name)
访问子项的数据(如果未找到child_name,后者将默认返回None),例如如果用户将'andrew'作为child_name引入,则会返回另一个字典{'father': 'john', 'mother': 'jane'}
。
因此,要获得孩子的“母亲”密钥,您可以使用child2parents[child_name]['mother']
。
在Python2.7中,如果要迭代字典,可以致电child2parents.iteritems()
,参见iteritems。
答案 1 :(得分:0)
您按['i']
为['mother']
编制索引,但['i']
只是包含字符串"i"
的列表,而您实际上并未对嵌套字典编制索引在child2parents里面。 i
是每次迭代时child2parents内部的关键。然后,您将提示输入一个子名称,该名称将是您要进一步索引的键。我认为你的意思是使用child2parents[i]['mother']
答案 2 :(得分:0)
你的程序中的第一个错误是你不能使用字符串作为List的索引(在print ['i'] ['mother']中)你必须将这些indeces转换为整数或考虑其他方式。我是这样写的:
child2parents = {'andrew': {'father': 'john', 'mother': 'jane'}, 'betsy': {'father': 'nigel',
'mother': 'ellen'}, 'louise': {'father':
'louis', 'mother': 'natalie'},
'chad': {'father': 'joseph', 'mother': 'mary'}}
x = ""
while x != 4:
choice = raw_input("Enter what information do you want(mother,father, parents)")
childs_name = raw_input("please enter childs name here ")
if choice =="parents":
print choice+" of "+childs_name+ " is: " + child2parents[childs_name]['father']+","+child2parents[childs_name]['mother']
else:
print choice+" of "+childs_name+ " is: " + child2parents[childs_name][choice]