2013-11-30 10 views
1

К примеру, у меня есть два словаря:Как сравнить соответствующие элементы в словаре python?

a = { 
    'Letters': ['Alpha', 'Beta', 'Theta'], 
    'Animals': ['Dog', 'Cat', 'Ox'] 
} 

мне нужно удовлетворять условие таким образом, что я возвращать список, так что только значение в «Письмах», которые больше/равно/меньше (как указано) соответствующие значения в «Животные» включены.

В принципе, существует простой способ сравнить значения в списке по совпадающим индексам?

'Альфа' против 'Dog'

'бета' против 'Cat'

'Theta' против 'Ox'

ответ

2

Чтобы получить соответствующие пары, вы можете использовать zip (думать о том, как куртка молния ведет себя):

>>> a = {'Letters': ['Alpha', 'Beta', 'Theta'], 'Animals': ['Dog', 'Cat', 'Ox']} 
>>> zip(a["Letters"], a["Animals"]) 
[('Alpha', 'Dog'), ('Beta', 'Cat'), ('Theta', 'Ox')] 

Если вы не заботитесь о порядке, только о переписке, вы можете уменьшить это

>>> zip(*a.values()) 
[('Dog', 'Alpha'), ('Cat', 'Beta'), ('Ox', 'Theta')] 

(В Python 3, сделать это list(zip(..)), чтобы получить список, но вы все еще можете итерацию над ней, как и в for pair in zip(*a.values()): print(pair), без материализации его.)

0

Вы можете сделать:

>>> a = {'Letters': ['Alpha', 'Beta', 'Theta'], 'Animals': ['Dog', 'Cat', 'Ox']} 
>>> [ letter for letter, animal in zip(a['Letters'], a['Animals']) if letter > animal] 
['Theta'] 
>>> [ letter for letter, animal in zip(a['Letters'], a['Animals']) if letter < animal] 
['Alpha', 'Beta'] 
>>> 
Смежные вопросы