首页 > 解决方案 > 使用地图更新python中的字典列表

问题描述

所以我有一个看起来像这样的列表:

users = [{'id': 11, 'name': 'First'}, {'id': 22, 'name': 'Second'}, {'id':33, 'name': 'Third'}] 

我想要做的是通过传递 id、创建新用户并用新用户替换旧用户来更新用户名。我想获取更新用户的列表,如下所示:

updated_users = list(map(update, users))

如果我可以将 id 作为参数发送到更新 func,我想要做的事情看起来像这样:

def update(id):
    if user['id'] == id:
        new_user = some_fun()
        user = new_user
        return user

我的更新功能应该如何?

标签: pythondictionary

解决方案


我不知道你为什么要使用 map ,我认为这是一种错误的方法,因为 map 不适合这种事情(你可以让它工作,但它不是要走的路)

你可以这样做:

users = [{'id': 11, 'name': 'First'}, {'id': 22, 'name': 'Second'}, {'id':33, 'name': 'Third'}]

def update(id, new_name):
    for user in users:
        if user["id"] == id:
            user["name"] = new_name
            return
    users.append({'id':id,'name':new_name}) # if not exist add user

print(users)
update(11,"Last")
update(1, "New_First")
print(users)

输出:

[{'id': 11, 'name': 'First'}, {'id': 22, 'name': 'Second'}, {'id': 33, 'name': 'Third'}]
[{'id': 11, 'name': 'Last'}, {'id': 22, 'name': 'Second'}, {'id': 33, 'name': 'Third'}, {'id': 1, 'name': 'New_First'}]

推荐阅读