У меня есть следующие структуры:
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)
Так что если ключ от dict prev
не найден в списке now
, Я добавляю значение в список old
.
Результат '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']