向字典中添加然后删除

2024-04-29 00:07:52 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的密码

def make_directory():
    return []


def get_number(directory, person):
    a = dict(directory)
    if person in a:
        return a[person]
    else:
        return 0


def add_number(directory, person, number):
    directory.append((person,number))
    return(str(person) + ' ' +'added!')    





def del_number(directory, person):
    a = dict(directory)
    if person in a:
        del a[person]
        return (str(person) + ' ' +'deleted!')
    else:
        return 'Not found!'



def print_list(directory):
    print(directory)
phonebook = make_directory()
add_number(phonebook, 'Police', 999)
add_number(phonebook, 'Lynna', 8444)
add_number(phonebook, 'Jack', 1123)
add_number(phonebook, 'Sister', 5720)
print(get_number(phonebook, 'Jack'))
print(add_number(phonebook, 'Alex', 6346))
print(del_number(phonebook, 'Alex'))

当我尝试print(print_list(phonebook))时,我得到的是[('Police', 999), ('Lynna', 8444), ('Jack', 1123), ('Sister', 5720), ('Alex', 6346)],而不是[('Jack', 1123), ('Lynna', 8444), ('Police', 999), ('Sister', 5720)]。你知道吗

为什么del_number()函数调用没有删除'Alex'?你知道吗


Tags: addnumbermakereturndefsisterdirectoryperson
1条回答
网友
1楼 · 发布于 2024-04-29 00:07:52

您的del_number()函数将列表转换为字典,然后仅从该字典中删除此人,原始directory列表不受影响:

def del_number(directory, person):
    a = dict(directory)
    if person in a:
        del a[person]

您需要改为directory;找到号码后可以使用list.remove()

def del_number(directory, person):
    a = dict(directory)
    if person in a:
        directory.remove((person, a[person]))
        return (str(person) + ' ' +'deleted!')
    else:
        return 'Not found!'

如果你的directory是一本字典,那么做起来就容易多了:

def make_directory():
    return {}

def add_number(directory, person, number):
    directory[person] = number
    return(str(person) + ' ' +'added!')    

并删除其他函数中的dict()调用:

def del_number(directory, person):
    if person in directory:
        del directory[person]
        return (str(person) + ' ' +'deleted!')
    else:
        return 'Not found!'

然后,使用字典可以执行以下操作:

def get_number(directory, person):
    return directory.get(person, 0)

例如,如果在字典中找不到person,则返回默认值。你知道吗

相关问题 更多 >