for i in q34.keys():#遍历q34的键
for j in range(len(q34[i])):#遍历键对应的值
if len(q34[i][j])==3:#若该列表长度为3
if i==q34[i][j][2]:#且键等于该列表的最后一位元素
q34[i][j].pop(1)#该列表pop第二位元素
else:
q34[i][j].pop(2)#否则pop出第三位元素
print(q34["A-B"])
当i为A-B时,q34[“A-B”]=[[A-C,A-B,B-C]]
我想输出的结果为q34[“A-B”]=[[A-C,A-B]],现在跑出的结果却为q34[“A-B”]=[[A-C,B-C]],这是为什么呢?
该回答引用chatgpt:我认为问题出在以下这行代码
if i==q34[i][j][2]:
在这个条件语句中,你使用了变量 i 来判断键和列表中最后一个元素是否相等。但是,在你的 for 循环中,变量 i 是遍历 q34 字典的键,而不是遍历 q34[i] 列表中的元素。因此,当 i 等于 "A-B" 时,此条件语句会比较 "A-B" 和 "B-C" 是否相等,因为 "B-C" 是该列表中最后一个元素。
要修复这个问题,你需要使用列表中最后一个元素来比较,而不是使用外部的变量 i。你可以将条件语句修改为:
if q34[i][j][-1] == i:
这样,条件语句会比较列表中最后一个元素和键是否相等,而不是比较外部变量 i 和列表中的第三个元素是否相等。这样就能够正确地弹出第二个元素,得到期望的结果。
你把完整的代码放出来,别人才好进行测试
你q34里到底存的什么呀
无法确定出现该情况的具体原因,需要查看完整的代码和数据结构定义才能确定。但是可能有以下几种可能性需要排查:
建议添加详细的代码和数据结构定义,以及相关的操作代码,有助于确定问题的具体原因。