2013-10-15 51 views
-1

我有以下的代码,获取字符串列表从用户的raw_input:如何查找与列表中的多个词典词条

def Lookup(Dict_list): 
    print 'Please enter one alias per line. Leave blank when finished.' 
    user_alias = [alias for alias in iter (raw_input, '') ] 
    print user_alias 
    for row in Dict_list: 

     #print "row test" 
     #print row 
     if user_alias in row.values(): 
      print row 


    for row in Dict_list: 
     if user_alias[0] == row['_cn6ca']: 
       email1 = row['_chk2m'] 
       print email1 
       return email1 
      if user_alias[1] == row['_cn6ca']: 
       email2 = row['_chk2m'] 
       print email2 
       return email2 
      if user_alias[2] == row['_cn6ca']: 
       email3 = row['_chk2m'] 
       print email3 
       return email3 

Lookup(Dict_list) 

我如何改变,如果user_alias ==行['_ cn6ca ']:行,以便它将查找并返回每个用户输入的用户别名的电子邮件地址? (这些键将保持不变)

我的目标是要存储这些抬头电子邮件,在.csv


下面是在终端产生后粘贴:

请输入每行一个别名。完成后留空。 PaulDu Jeanell Twanna JaneyD 夏洛 Janessa

[ 'PaulDu', 'Jeanell', 'Twanna', 'JaneyD', '夏洛', 'Janessa'] 注销

[工艺完成]

+4

你期待SO写的每一件这样的吗? –

+1

当'user_alias'是一个字符串列表时,你期望'row.values()中的user_alias要做什么?你只是把随机代码扔在一起,希望它能做些有用的事情? – abarnert

+0

我希望在代码底部实现类似3重复的if语句,但是以循环形式。我只学习了大约3周的编程语言,所以我明白我的问题可能会让你失望,但这不是我的意图。 – gigawatts

回答

1

我已经剥去了一些细节,以便如果行(这是一个字典型)有用户作为一个如果它的值,那么我们找到他们的电子邮件ID。

Dict_list = [{'nokey':'someval'},{'_cn6ca':'Twanna', '_chk2m': "[email protected]"},{'_cn6ca':'Jeanell', '_chk2m': "[email protected]"}] 

    #print 'Please enter one alias per line. Leave blank when finished.' 
    #user_alias = [alias for alias in iter (raw_input, '') ] 
    user_alias = ['PaulDu', 'Jeanell', 'Twanna', 'JaneyD', 'Charlot','Janessa'] 
    print user_alias 
    for user in user_alias: 
     for row in Dict_list:  
      if user in row.values(): 
       print row 

    for user in user_alias: 
     for row in Dict_list: 
      if row.has_key('_cn6ca') and row.has_key('_chk2m'): 
       if user == row['_cn6ca']: 
        email = row['_chk2m'] 
        print email 

输出:

['PaulDu', 'Jeanell', 'Twanna', 'JaneyD', 'Charlot', 'Janessa'] 
    {'_cn6ca': 'Jeanell', '_chk2m': '[email protected]'} 
    {'_cn6ca': 'Twanna', '_chk2m': '[email protected]'} 
    [email protected] 
    [email protected] 
+0

为了清楚起见,成功查找的电子邮件作为一个变量存储在名为“email”的列表中,是否正确? – gigawatts

+0

嗯,因为你必须改变一下代码。在for循环之前初始化“email = []”。然后在循环中写下“email.append(row ['_ chk2m'])”。这将在操作结束时将所有存在的电子邮件转换为* list *类型的变量。 – Theja

相关问题