例如,我有两个词典:
a = {
'Letters': ['Alpha', 'Beta', 'Theta'],
'Animals': ['Dog', 'Cat', 'Ox']
}
我需要满足一个条件,使得我返回一个列表,以便只包含'Letters'中大于/等于/小于(如指定)的值,包含'Animals'中的相应值。
基本上,有一种简单的方法可以只匹配匹配索引中列表中的值吗?
'Alpha'与'狗'
'Beta'与'Cat'
''''与'牛'对比答案 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']
>>>