python 对列表数据排序_对Python列表数据库排序

下一个代码被修改为包含一个新的菜单项“(r)”,以重新排列保存在csv文件中的电话列表中的姓名/号码。步骤包括:将两行添加到主循环,一行添加到菜单选项以打印出新的菜单选项(并将“r”添加到可接受的选项列表中),以及

执行重新排序的新函数。这个函数被称为reorder_phones()。在

用于运行此代码的文件与下面的类似。在Before:

Choice: s

Name Phone Number

1 Jerry Lopez (212) 842-2527

2 George Sierr (212) 452-8145

3 Elaine Benea (212) 452-8723

After:

Choice: s

Name Phone Number

1 Elaine Benea (212) 452-8723

2 George Sierr (212) 452-8145

3 Jerry Lopez (212) 842-2527

主要的问题是,我不知道如何保存和使用已排序的列表;如果有人能指导我,我将不胜感激。在import os

import csv

phones = []

name_pos = 0

phone_pos = 1

phone_header = [ 'Name', 'Phone Number']

def proper_menu_choice(which):

if not which.isdigit():

print ("'" + which + "' needs to be the number of a phone!")

return False

which = int(which)

if which < 1 or which > len(phones):

print ("'" + str(which) + "' needs to be the number of a phone!")

return False

return True

def delete_phone(which):

if not proper_menu_choice(which):

return

which = int(which)

del phones[which-1]

print( "Deleted phone #", which)

def edit_phone(which):

if not proper_menu_choice(which):

return

which = int(which)

phone = phones[which-1]

print("Enter the data for a new phone. Press to leave unchanged.")

print(phone[name_pos])

newname = input("Enter phone name to change or press return: ")

if newname == "":

newname = phone[name_pos]

print(phone[phone_pos])

newphone_num = input("Enter new phone number to change or press return: ")

if newphone_num == "":

newphone_num = phone[phone_pos]

phone = [newname, newphone_num]

phones[which-1] = phone

def save_phone_list():

f = open("myphones.csv", 'w', newline='')

for item in phones:

csv.writer(f).writerow(item)

f.close()

def load_phone_list():

if os.access("myphones.csv",os.F_OK):

f = open("myphones.csv")

for row in csv.reader(f):

phones.append(row)

f.close()

def show_phones():

show_phone(phone_header, "")

index = 1

for phone in phones:

show_phone(phone, index)

index = index + 1

print()

def show_phone(phone, index):

outputstr = "{0:>3} {1:<20} {2:>16}"

print(outputstr.format(index, phone[name_pos], phone[phone_pos]))

def create_phone():

print("Enter the data for a new phone:")

newname = input("Enter name: ")

newphone_num = input("Enter phone number: ")

phone = [newname,newphone_num]

phones.append(phone)

def reorder_phones():

global phones # this insures that we use the one at the top

sorted(phones, key=lambda x: x[0])

def menu_choice():

""" Find out what the user wants to do next. """

print("Choose one of the following options?")

print(" s) Show")

print(" n) New")

print(" d) Delete")

print(" e) Edit")

print(" q) Quit")

print(" r) Reorder")

choice = input("Choice: ")

if choice.lower() in ['n','d', 's','e', 'q', 'r']:

return choice.lower()

else:

print(choice +"?")

print("Invalid option")

return None

def main_loop():

load_phone_list()

while True:

choice = menu_choice()

if choice == None:

continue

if choice == 'q':

print( "Exiting...")

break # jump out of while loop

elif choice == 'n':

create_phone()

elif choice == 'd':

which = input("Which item do you want to delete? ")

print("which is ", which)

delete_phone(which)

elif choice == 's':

show_phones()

elif choice == 'e':

which = input("Which item do you want to edit? ")

print("which is ", which)

edit_phone(which)

elif choice == 'r':

reorder_phones()

else:

print("Invalid choice.")

save_phone_list()

# The following makes this program start running at main_loop()

# when executed as a stand-alone program.

if __name__ == '__main__':

main_loop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值