我需要在Python中创建一个列表来收集大量人员的各种信息(姓名、出生日期、身份证号码、电子邮件地址、地址、电话号码......)。
我想将所有内容存储在一个列表中,其中每个人都有一个从 0 开始并递增的索引“i”。目标是通过简单地使用索引“i”和缩写来指示要检索的有关该人的信息类型(姓名、ID、电话、地址、电子邮件等)来检索有关该人的特定信息。
如何定义它以及如何访问给定人员的特定元素?
我之前在 Fortran 中使用派生数据类型完成了此操作,其中我使用以下内容来检索给定人员的各种元素:
list(i)%name
list(i)%id
list(i)%tel
list(i)%addr
list(i)%email
我无法在列表中定义信息类型(名称、ID、电子邮件、地址、电话...)以将其用于索引。
您可以使用字典列表,这是最简单的:
people = [
{"name": "John", "tel": "123"},
{"name": "Lottie", "tel": "456"},
]
while True:
q = input(f"Enter index (0..{len(people) - 1}) + field:")
if not q:
break
idx_str, field = q.split(None, 1)
try:
idx = int(idx_str)
except ValueError:
print("Invalid index (not a number)")
continue
try:
person = people[idx]
except IndexError:
print("Invalid index (no such person)")
continue
print(person.get(field, "No such field"))
Enter index (0..1) + field:1 tel
456
Enter index (0..1) + field:1 name
Lottie
Enter index (0..1) + field:0 name
John
Enter index (0..1) + field:0 address
No such field
Enter index (0..1) + field:4 address
Invalid index (no such person)
Enter index (0..1) + field:foo foo
Invalid index (not a number)
Enter index (0..1) + field: