python - 使用地图更新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
我的更新功能应该如何?
解决方案
我不知道你为什么要使用 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'}]
推荐阅读
- python - 如何通过pyinstaller在可执行文件中包含json
- blazor - 重复的项目模板 + 缺少自托管模板
- javascript - 重复选择的选项时如何节省资源
- python - 通过 xp_cmdshell & python os.system 以编程方式打开文本文件
- html - 如何在星评中添加显示小数部分的功能?
- c++ - 为什么我不能将运算结果乘以常数特征张量数组
- c++ - 在 mac 上的 Visual Studio 代码中设置 C++
- c++ - Poco.Crypto 库在构建 Poco 时未链接到 libssl.so。为什么?
- c# - 如何修复错误:'Web api 在 iis 上发布后从 SQL Server 获取数据时显示空白页'
- c# - 如何存储 Android 设备令牌?