在字典中迭代..(双重迭代)python

时间:2011-12-08 23:09:52

标签: python

我有一本字典

example: A = {1:'one',2:'two' , 3: 'three}

所以我想要的基本上就像一个2 for for循环的东西.. 这样我就可以得到以下订单..

# 1 2
# 1 3
# 2 3
... and so on if more elements are there

所以基本上是o(n2)操作..我们有一个带循环的循环 我们如何在python字典中实现这一点。 我很难搞清楚..

for key in A.keys():
      # how do i Access all the other keys.. 
           # do something

由于

3 个答案:

答案 0 :(得分:5)

>>> import itertools
>>> list(itertools.combinations([1, 2, 3], 2))
[(1, 2), (1, 3), (2, 3)]

答案 1 :(得分:4)

>>> import itertools as it
>>> A = {1:'one', 2:'two', 3: 'three'}
>>> list(it.combinations(A.keys(), 2))
[(1, 2), (1, 3), (2, 3)]

答案 2 :(得分:1)

如果需要迭代所有键对,可以使用简单的for循环来完成:

>>> d={1:'one',2:'two',3:'three'}
>>> for (x,y) in ((x,y) for x in d for y in d if x!=y):
...     print x,y

编辑:

为避免两次列出同一对,您可以在迭代之前使用一组来存储对:

>>> for (x,y) in set(((min(x,y),max(x,y)) for x in d for y in d if x!=y)):
...     print x,y

但这有点笨拙,我建议使用itertools.combinations,如dstromberg的回答所示。