我有以下结构:
prev = { 'alpha:10.2': '145', 'teta:180': '198', 'eltira:140': '222', 'ronta:23.14':220}
now = ['alpha:10.3','teta:180', 'eltira:142']
和以下代码:
old = []
for k, v in prev.iteritems():
if k not in now:
old.append(v)
prev
因此,如果在 list 中找不到dict 中的键now
,我会将值添加到old
列表中。
结果'旧= ['145','222']`
但是,我还想检查哪个部分与键不对应。我倾向于使用namedtuple。
Package = collections.namedtuple('Package', 'name version')
for k, v in prev.items():
name, version = k.split(':')
Package(name=k, version='v')
- 如果
name
对应但version
不对应,则执行与上述相同的操作。 - 如果
name
找不到将其添加到新列表中old_names
,也可以按照上面的方法进行操作。
问题是这if k not in now
行不通。我可以用两个循环和三个循环来做到这一点,ifs
但也许可以选择让它更干净。
期望输出:
old=[ '145', '222']
old_names=['ronta']