我有一本字典
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
由于
答案 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的回答所示。