如何比较python字典中的相应项?

时间:2013-11-30 18:41:11

标签: python list dictionary comparison

例如,我有两个词典:

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

我需要满足一个条件,使得我返回一个列表,以便只包含'Letters'中大于/等于/小于(如指定)的值,包含'Animals'中的相应值。

基本上,有一种简单的方法可以只匹配匹配索引中列表中的值吗?

'Alpha'与'狗'

'Beta'与'Cat'

''''与'牛'对比

2 个答案:

答案 0 :(得分: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)中迭代它,而不会实现它。)

答案 1 :(得分: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']
>>>