文件名称.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
下面的代码在底部给出了打印结果。我想做的是做一个菜单驱动的程序,允许用户通过数字选择他们想要修改的记录。在伪代码中,它看起来像这样:
我的问题是我无法找到一种方法将主键绑定到输入的用户号。由于python字典没有顺序,我发现这很难做到。有人能帮忙吗?我只需要这些,剩下的我自己做。在
^{pr2}$Phone listings:
- Farnsworth, Professor: Home 999 555-5555, Cell 999 666-6666
- Fry, Philip J.: Home 999 111-1111, Cell 999 222-2222
- Rodriguez, Bender B.: Home 999 333-3333, Cell 999 444-4444
- Wong, Amy: Home 999 999-9999, Cell 999 101-1010
- Leela, Turanga: Home 999 777-7777, Cell 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'}
}
如果您只需要一个有序字典,请使用
collections.OrderedDict
在Python2.7中,可以使用
my_dict.keys()[index]
或my_dict.values()[index]
按索引访问键或值。在正如@mgilson所指出的,这在3.0中不起作用,因为它返回一个不支持索引的ValuesView对象,但您仍然可以将其强制到如下列表中:
list(my_dict.keys())[index]
。在python的更新版本(python2.7+)在
collections.OrderedDict
中有一个有序的字典类型,但是(据我所知),您仍然不能通过索引访问字典。我建议在你的字典旁边放一个有序的数据类型(比如列表)。然后,当您想通过索引获取值时,只需执行mydict[mylist[i]]
。你也许可以通过dict的子类化使它更漂亮一些,但本质上就是这样。在实际上,如果您想通过索引获取数据,那么使用
list
作为数据结构可能更好。。。这样做的好处是,你可以对它进行排序(例如按字母顺序),并且它保持它的顺序。在虽然我认为整个设计是错误的,因为一旦你有一个巨大的电话簿,我认为打印它和让用户选择没有任何意义。在
但是,如果要绑定名称和用户选项(编号),可以在打印给用户的同时创建字典:
那么要得到黄的手机号码,艾米,你可以
print pBook[user_choices[4]]['cell']
相关问题 更多 >
编程相关推荐