循环从字典中提取信息

时间:2016-04-09 20:03:01

标签: python dictionary

首先我是一个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工作

3 个答案:

答案 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]