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

3 投票
3 回答
2591 浏览
提问于 2025-04-17 08:00

我有一个字典

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

所以我想要的基本上就是像两个循环那样的东西……

这样我就可以得到以下的顺序……

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

所以基本上就是那种o(n²)的操作,也就是一个循环里面再有一个循环,

我该如何在Python字典中实现这个呢?我现在有点搞不清楚……

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

谢谢

3 个回答

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的回答中提到的那样。

5

在编程中,有时候我们需要把一些数据从一个地方移动到另一个地方。这就像把书从一个书架搬到另一个书架一样。这个过程可能会涉及到很多步骤,比如找到书、拿起书、然后放到新的地方。

在代码中,这个过程可能会用到一些特定的命令和函数。比如,我们可能会用一个叫“复制”的命令来把数据从一个地方复制到另一个地方。这样,我们就可以在新的地方使用这些数据,而不影响原来的数据。

有时候,我们还需要检查数据是否成功移动,这就像在搬书的时候,确认一下书是不是都放到了新的书架上。

总之,数据的移动和管理在编程中是非常重要的,它帮助我们更好地组织和使用信息。

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

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答