ファイル names.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 ''
電話リスト:
- ファーンズワース教授: ホーム 999 555-5555、セル 999 666-6666
- フライ、フィリップ J.: ホーム 999 111-1111、セル 999 222-2222
- ロドリゲス、ベンダー B.: ホーム 999 333-3333、セル 999 444-4444
- ウォン、エイミー: ホーム 999 999-9999、セル 999 101-1010
- リーラ、トゥランガ: 自宅 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'}
}