文件名.dat 看起来完全像这样:
Fry, Philip J.;999 111-1111;999 222-2222
Rodriguez, Bender B.;999 333-3333;999 444-4444
Farnsworth, Professor;999 555-5555;999 666-6666
Leela, Turanga;999 777-7777;999 888-8888
Wong, Amy;999 999-9999;999 101-1010
下面的代码在底部给出了打印结果。我想做的是制作一个菜单驱动程序,允许用户按数字选择他们想要修改的记录。在伪代码中,它看起来像这样:
- 第一个带有编号电话列表的代码块在这里
- 按编号输入要修改的记录
- 用户输入 3
- 对于 Rodriguez,Bender B 输入 ac 修改手机或输入 h 修改家庭电话
- 用户输入 h
- 输入不带空格的 10 位电话号码
- 用户输入 7771234567
- 记录被改变
- 输入 p 以查看修改后的电话簿(这将显示所有记录,但 Bender 使用不同的电话
- 你想再做一次修改吗?y 表示是,n 表示否
我的问题是我找不到将主键绑定到输入的用户号码的方法。由于 python 字典没有顺序,我发现这很难做到。有人可以帮忙吗?我只需要这个,剩下的我自己做。
pBook = {}
fp = open('names.dat')
# populate pBook
while 1:
line = fp.readline()
if not line:
break
x = line[:-1]
data = x.split(';')
pBook[data[0]] = {'home': data[1], 'cell': data[2]}
fp.close()
# optional if you want to see the dictionary structure
# print pBook
i = 1
print '\nPhone listings:\n'
for record in pBook:
key = str(i)
i += 1
print key + ')', record + ':', 'Home', pBook[record]['home'] + ',', 'Cell', pBook[record]['cell']
print ''
电话清单:
- Farnsworth,教授:家庭 999 555-5555,细胞 999 666-6666
- Fry, Philip J.:家庭 999 111-1111,牢房 999 222-2222
- Rodriguez, Bender B.:家庭 999 333-3333,牢房 999 444-4444
- 黄,艾米:家庭 999 999-9999,牢房 999 101-1010
- Leela,Turanga:家庭 999 777-7777,细胞 999 888-8888
填充后打印 pBook 的结果,为这篇文章格式化,以便更容易理解它的结构。主键是人名,值是另一个字典,其中“cell”和“home”是键,电话号码是各自的值。
{
'Farnsworth, Professor': {'cell': '999 666-6666', 'home': '999 555-5555'},
'Fry, Philip J.': {'cell ': '999 222-2222', 'home': '999 111-1111'},
'Rodriguez, Bender B.': {'cell': '999 444-4444', 'home': '999 333-3333'},
'Wong, Amy' : {'cell': '999 101-1010', 'home': '999 999-9999'},
'Leela, Turanga': {'cell': '999 888-8888', 'home': '999 777-7777'}
}