【问题标题】:Sorting and comparing lists with a nested for loop使用嵌套的 for 循环对列表进行排序和比较
【发布时间】:2020-11-29 04:39:55
【问题描述】:

我正在尝试使用 for 循环对列表进行排序和比较,但我不断收到错误消息:

排序(lista[str(y+1)])
KeyError: '14454'

这是我的代码:

l = 0
k = 0
u = 0
lista = {}


sys.stdout = open("1.txt", "w")
for i in range(1,28):
    for j in range(1,28):
        for k in range(1,28):
          a = float(i)
          b = float(j)
          c = float(k)
          q = (a*b*c) / ((a+b+c)*(a+b+c)*(a+b+c))
          if q > (1 / 81) and q < 1:
            if a != b and b != c and c != a:
              lista[str(l)] = [a,b,c]
              l = l + 1

for x in range(l):
    for y in range(l):
        sorted(lista[str(x)])
        sorted(lista[str(y+1)])

        if lista[str(x)] == [str(y+1)]:
            u = u + 1
    
sys.stdout.close()

【问题讨论】:

  • y+1 when y 越过range(l) 是错误的,因为它越过了最后一个元素。因此,您会得到 KeyError。我看到您的代码还有很多其他问题,但其中大多数与您的主要问题无关。总体而言,您要做什么?
  • 我认为通过在每次迭代中打印 y 的值来调试第二个嵌套循环可能有助于找到导致 KeyError 的 y 的确切值
  • 感谢大家的帮助!我通过制作“for y in range(L-1)”修复了 KeyError,现在,我试图弄清楚为什么我不能打印变量“u”。 @UltraInstinct

标签: python list sorting range nested-for-loop


【解决方案1】:

错误(解释)

KeyError: "14454"

表示密钥不存在。 例如,如果我的字典是{"hi": "hi", "hello": "hello"},我尝试调用myDict["hiya"],它将返回KeyError: "hiya"。

你应该怎么做?

好吧,调试它。通过将print(lista) 放在循环之前(避免控制台溢出),您可以看到lista 的键并从那里找到您的代码解决方案!

【讨论】:

  • 感谢您的帮助!我通过制作“for y in range(L-1)”修复了 KeyError,现在,我试图弄清楚为什么我不能打印变量“u”
猜你喜欢
  • 2017-02-27
  • 2017-12-18
  • 2023-03-05
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 2013-02-13
相关资源
最近更新 更多