所以我有一个类似下面的字典,但是,我试图减去ART [0] [0] - ART [1] [0],这必须是一个迭代。
这就是我所拥有的,但它似乎不起作用。我一直收到错误:'KeyError:2'
任何帮助都将不胜感激。
for i in range(1, 5): #from
k = i
for j in range (1, 5): #to
if i == j:
pass
else:
t = ART[j][0] - ART[i][0]
g = ART[j][1] - ART[i][1]
示例输入:
<=> ART = {'U':( 5,6),'E':( 7,3),'A':( 3,3),'O':( 3,2),'I': (1,4)}
答案 0 :(得分:0)
通过密钥名称访问字典。有关示例,请参阅here。
例如,ART['U']
将返回(5, 6)
。在您的代码中,您尝试访问密钥2
,因为j
等于2
。但是,字典中没有名为echo json_encode($value);
的键。
答案 1 :(得分:0)
好像你想从字典中获取所有键的组合。字典是无序的,因此ART[0]
没有任何含义 1)。相反,您可以直接迭代密钥:
for i in ART:
for j in ART:
if i != j:
t = ART[j][0] - ART[i][0]
g = ART[j][1] - ART[i][1]
或更短,使用itertools.product
:
for i, j in itertools.product(ART, repeat=2):
if ...
1)除非你的词典中有一个键0
,否则你没有。
答案 2 :(得分:0)
您在评论中提到要通过索引调用字典中的项目。这是不可能的,因为字典是无序的。字典用于映射特定的密钥&#39;到您针对该密钥存储的值。如果您print ART
多次,您会看到不同的排序。我不认为你想要一本字典,我相信你已经选择了字母来制作钥匙,以便制作钥匙。
Python使用零索引。因此,如果您正在迭代,range(1, 5)
会错过列表中的第一项。您希望for x in range(0, 5)
获取列表中的所有元素,这些元素可以简单地写为for x in range(5)
。
最后,您的代码包含i
,j
,k
(从未使用过),t
和g
。这使得很多难以理解,特别是当Python为命名事物提供了如此大的灵活性时。
根据这些假设,我认为您需要一个元组列表作为您的数据结构:
ART = [(5, 6), (7, 3), (3, 3), (3, 2), (1, 4)]
for i, item in enumerate(ART):
for j, pair_item in enumerate(ART):
if i != j:
t = item[0] - pair_item[0]
g = item[1] - pair_item[1]