python-3.x - 需要帮助来弄清楚如何更新一些 python 字典列表中的 key.value
问题描述
大家好,我有这些数据:
members = [{'n1': 1, 'active': True, 'ticket': 10, },
{'n2': 2, 'active': False, 'ticket': 0, },
{'n3': 3, 'active': True, 'ticket': 12, }]
我需要不时更新成员,检查他们是否处于活动状态,并为活动成员提供新票,并可能过滤非活动成员。
为了检查活动或非活动我可以使用这样的一些:
inactive = list(filter(lambda n: n.get('active') == False, members))
或者也许保持不活跃但不给他们新票。
更新是用户对 n 和票证的输入。
所以我需要检查输入是否已经在字典中只是为了更新所需的数据,即。如果用户为 n 输入 1,我只有 1,所以我只更新票证。否则我更新两者。
但是我有一个小问题,我怎么能检查我将在 n 中输入的数字是否已经在列表中的字典中。
对于新成员,我可以使用这样的一些:
updated = {'n': int(input('number'), 'active': True, 'ticket': int(input('number')}
总而言之:
我需要检查 n.value 是否在 dict 中,如果是,则仅更新 ['ticket].value 或者如果不使用 n 更新 dict 并为新值添加票证。
保罗
解决方案
>>> members = [{'n': 1, 'active': True, 'ticket': 10, },
... {'n': 2, 'active': False, 'ticket': 0, },
... {'n': 3, 'active': True, 'ticket': 12, }]
要查找成员,您只需遍历成员,直到找到好的成员:
>>> def find_member(k):
... return next(((i, m) for i, m in enumerate(members) if m['n'] == k), (-1, None))
该next
函数将返回第一个找到的 key'n'
具有 value 的成员k
,或者Npne
如果没有。如果您需要按名称删除成员,我添加了一个索引。
>>> find_member(2)
(1, {'n': 2, 'active': False, 'ticket': 0})
>>> find_member(10)
(-1, None)
要更新成员,请使用此函数并执行更新:
>>> def update_member(k, t):
... i, m = find_member(k)
... if i == -1:
... members.append({'n': k, 'active': True, 'ticket': t})
... else:
... m.update({'ticket': t})
>>> update_member(1, 15)
>>> members
[{'n': 1, 'active': True, 'ticket': 15}, {'n': 2, 'active': False, 'ticket': 0}, {'n': 3, 'active': True, 'ticket': 12}]
我的建议是:创建一个Member
包装 dict 并提供一些有用方法(set_active
, renew_ticket
, ...)的类和一个Members
包装列表并提供其他有用方法的类(find_by_name
, update_by_name
, delete_by_name
, ...)
推荐阅读
- xml - Groovy XmlSlurper 中的父节点
- php - 如何根据phpmaker中登录的用户级别创建下拉列表?
- c++ - 如何创建包含 libstdc++6 3.4.26 的 CPack debian 包
- c++ - c++ dll中的for循环
- tf.keras - Tensorflow 2.X:了解铰链损失
- javascript - VM1686:2 Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 456 Promise.then (async) (anonymous)
- c# - 上传大文件(超过 4GB)ASP .NET CORE 5
- javascript - 为什么useEffect中的依赖数组进入无限循环?
- c# - 为什么来自 IEnumerator 的回调 lambda 函数可以更改公共变量而不是本地变量
- django - 测试数据库无法从第二个数据库查询