在python的字典中循环双循环

时间:2014-02-19 13:28:49

标签: python dictionary

我有一个带有从1到N的键的字典。我想通过双循环来浏览这个字典,这样我就不会同时使用两个元素(k从1变为N-1和j从k + 1到N)。我需要有效地完成此操作,因为我将不得不重复此操作。无论如何都要做字典理解,以便通过键:k从1变为N-1,j从k + 1变为N?

3 个答案:

答案 0 :(得分:5)

如果按键顺序无关紧要,可以这样做

my_dict = {"a": 1, "b": 2, "c": 3, "d": 4}

from itertools import combinations
for key1, key2 in combinations(my_dict.keys(), r = 2):
    print key1, key2

<强>输出

a c
a b
a d
c b
c d
b d

答案 1 :(得分:1)

根据你的描述,听起来你正试图访问一个数组(应该是)的上三角形,所以你可以使用numpy的triuhttp://docs.scipy.org/doc/numpy/reference/generated/numpy.triu.html)。

正如其他人所说,使用字典可能不是最佳选择。

答案 2 :(得分:1)

上“我想要做的是浏览字典中的所有对象并计算它们之间的距离”

你可以使用numpy广播来计算距离,它很快:

In [175]: locs=np.array([1,2,4,6])

In [176]: np.abs(locs[:, None]-locs)
Out[176]: 
array([[0, 1, 3, 5],
       [1, 0, 2, 4],
       [3, 2, 0, 2],
       [5, 4, 2, 0]])

您可以使用索引,例如locs[0][3]来直接获取元素0和元素3之间的距离。