2013-10-15 3 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 Шарло Джанесса

[ 'PaulDu', 'Jeanell', 'Twanna', 'JaneyD', 'Шарло', 'Джанесса'] выход из системы

[Процесс завершен ]

+4

Вы ожидали ТАК писать каждый кусок для вас? –

+1

Что вы ожидали 'user_alias в row.values ​​()' делать, когда 'user_alias' - список строк? Вы просто бросаете случайный код в надежде, что он сделает что-то полезное? – abarnert

+0

Я надеялся реализовать что-то вроде 3 повторяющихся операторов if в нижней части кода, но в форме цикла. Я изучал языки программирования примерно на 3 недели, поэтому я понимаю, что мои вопросы могут вас расстроить, но это не мое намерение. – gigawatts

ответ

1

Я разделил некоторые детали, чтобы, если строка (которая является типом dict) имеет пользователя как единицу, если его значения, то мы находим их идентификатор электронной почты.

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

Чтобы быть ясным, электронные письма, которые были успешно просмотрены, хранятся как одна переменная в списке с именем «электронная почта», правильно? – gigawatts

+0

хм, для этого вам нужно немного изменить код. Инициализируйте «email = []» перед циклом for. Затем в цикле напишите «email.append (строка ['_ chk2m'])». Это позволит получить все электронные письма, которые присутствуют в переменной типа * list * в конце операции. – Theja

Смежные вопросы