2015-12-23 4 views
0

У меня есть следующий список:Как напечатать следующие объекты списка

lst = ['Daniel', '2', '[email protected]', 'Jay', '1212', '[email protected]'] 

и как вы можете видеть, что это показывает номер и адрес электронной почты, давайте говорить номер 2 и Даниель @ перспективы .com - это атрибуты Даниила.

Как я могу построить функцию, которая позволит мне от raw_input напечатать те, например:

n = str(raw_input("Enter the name on the list:")) 
if n in lst: 
    print(...) #(2 and [email protected]) 
else: 
    print("Name is not on the List") 

И он должен работать, как это для Jay также. Можно ли сделать это?

Благодаря

+0

Спасибо всем @zvone был самым завершенным ответ и в решении моей проблемы. Веселого Рождества для всех. – Phyti

ответ

3

кажется лучше изменить структуру данных в словарь, так что вместо:

lst = ['Daniel', '2', '[email protected]', 'Jay', '1212', '[email protected]'] 

вы бы:

dct = {'Daniel': ('2', '[email protected]'), 'Jay': ('1212', '[email protected]')} 

Затем, вы можете делать то, что Вы писали:

if name in dct: 
    print dct[name] 

EDIT

Для создания словаря:

names = lst[::3] 
numbers = lst[1::3] 
emails = lst[2::3] 
dct = {name: (number, email) 
     for name, number, email 
     in zip(names, numbers, emails)} 
+0

Можете ли вы преобразовать список в Dict? С встроенной функцией? – Phyti

+1

Вы должны прочитать свой список 3-на-3. Первым пунктом будет * имя *, второй * номер *, третий * адрес электронной почты *. Затем просто выполните: 'dct [name] = number, email'. Для итерации 3-к-3 я бы перебирал индексы в 'range (0, len (lst), 3)'. – zvone

+0

А еще лучше ... 'names = lst [:: 3]', 'numbers = lst [1 :: 3]', 'emails = lst [2 :: 3]'. Затем, 'для имени, номера, электронной почты в zip (имена, числа, электронные письма): ...' – zvone

0

Вы, вероятно, хотите использовать словарь списков, например:

lst = {'Daniel': ('2', '[email protected]'), 'Jay': ('1212', '[email protected]')} 

Затем в использовании функции:

if n in lst: 
    print(lst[n]) 
+0

отличные мысли думают одинаково;) – zvone

+0

Ницца, то же время тоже. :) – DustinPianalto

1

Рассмотрите возможность использования словаря inst а также список:

names = {'Daniel':['2', '[email protected]'], 'Jay': ['1212', '[email protected]']} 
n=raw_input("Enter the name on the list:") ## Your input statement 
print(names.get(n, "Name is not in the list")) 

Это позволит исключить необходимость проверки.

ВЫВОД:

>>> 
Enter the name on the list:Daniel 
['2', '[email protected]'] 

>>> 
Enter the name on the list:df 
Name is not in the list 
+0

Черт! a min late: P – astrosyam

+0

Кроме того, не нужно использовать str() для raw_input. Ввод возвращает строку в любом случае. – astrosyam

0

Я хотел бы сделать это, первым превратить свой список в словарь шпонкой по названию:

import itertools 

def grouper(iterable, n): 
    args = [iter(iterable)] * n 
    return itertools.izip_longest(*args) 

lst = ['Daniel', '2', '[email protected]', 'Jay', '1212', '[email protected]'] 

dlst = dict([(name, (num, email)) for name, num, email in grouper(lst, 3)]) 

Тогда вы можете просто посмотреть на значения, которые вы хотите в диктофон в качестве входного сигнала поступает в:

print(dlst.get(raw_input('Enter the name on the list: '), 
       "Name is not in the list")) 
0

Другие были быстрее, выложу свой ответ в любом случае, так как я включил функцию, которая выводит его в симпатичной образом

dict = {'Daniel': ['[email protected]', '2'], 'Jay': ['[email protected]', '1212']} 

def func(): 
    name = raw_input("Enter the name on the list: ") 
    if name in dict: 
     print ', '.join(dict[name]) 
    else: 
     print "Name was not found" 

Результат:

>>> func() 
Enter the name on the list: Daniel 
[email protected], 2 
>>> func() 
Enter the name on the list: dsgd 
Name was not found 
Смежные вопросы