我有以下列表:
lst = ['Daniel', '2', 'daniel@outlook.com', 'Jay', '1212', 'jay@siber.com']
正如您所看到的那样,它显示了一个数字和一封电子邮件,假设数字2和daniel@outlook.com只是Daniel“属性”。
如何构建一个允许我从raw_input
打印这些内容的函数,例如:
n = str(raw_input("Enter the name on the list:"))
if n in lst:
print(...) #(2 and daniel@outlook.com)
else:
print("Name is not on the List")
它也必须像杰伊一样工作。是否有可能做到这一点?
由于
答案 0 :(得分:3)
最好将数据结构更改为字典,而不是:
lst = ['Daniel', '2', 'daniel@outlook.com', 'Jay', '1212', 'jay@siber.com']
你会得到:
dct = {'Daniel': ('2', 'daniel@outlook.com'), 'Jay': ('1212', 'jay@siber.com')}
然后,你可以完全按照你写的那样做:
if name in dct:
print dct[name]
修改强>
创建字典:
names = lst[::3]
numbers = lst[1::3]
emails = lst[2::3]
dct = {name: (number, email)
for name, number, email
in zip(names, numbers, emails)}
答案 1 :(得分:1)
考虑使用字典而不是列表:
names = {'Daniel':['2', 'daniel@outlook.com'], 'Jay': ['1212', 'jay@siber.com']}
n=raw_input("Enter the name on the list:") ## Your input statement
print(names.get(n, "Name is not in the list"))
这也将消除对if检查的需要。
<强>输出:强>
>>>
Enter the name on the list:Daniel
['2', 'daniel@outlook.com']
>>>
Enter the name on the list:df
Name is not in the list
答案 2 :(得分:0)
您可能希望使用列表字典,例如:
lst = {'Daniel': ('2', 'daniel@outlook.com'), 'Jay': ('1212', 'jay@siber.com')}
然后在你的函数中使用:
if n in lst:
print(lst[n])
答案 3 :(得分:0)
我会先将您的列表转换为名称上的字典:
import itertools
def grouper(iterable, n):
args = [iter(iterable)] * n
return itertools.izip_longest(*args)
lst = ['Daniel', '2', 'daniel@outlook.com', 'Jay', '1212', 'jay@siber.com']
dlst = dict([(name, (num, email)) for name, num, email in grouper(lst, 3)])
然后,您可以在输入输入时查找dict中所需的值:
print(dlst.get(raw_input('Enter the name on the list: '),
"Name is not in the list"))
答案 4 :(得分:0)
其他更快,但无论如何我都会发布我的答案,因为我包含了以漂亮的方式打印它的功能
dict = {'Daniel': ['daniel@outlook.com', '2'], 'Jay': ['jay@siber.com', '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
daniel@outlook.com, 2
>>> func()
Enter the name on the list: dsgd
Name was not found