Python - 当我尝试增加要匹配的键的值时,从字典中打印键值对突然不会打印

问题描述 投票:0回答:1
def decode():
 results = {}
 steps = 2
 postNumber = 1


 with open('Example.txt') as txt_file:
  for line in txt_file:
    key, value = line.strip().split(' ')
    results[int(key)] = str(value)

 for key, value in results.items():
  if postNumber == key:
    print(key, value)
  postNumber += steps 
  steps += 1

 

decode()

使用上面的代码,我目前正在尝试制作一个Python脚本,该脚本读取文件“Example.txt”,其中包含“6 q 1 r 3 p”行,其中每个数字和字母对都用换行符分隔。然后将它们存储到字典中,其中数字是键(存储为整数),字母是值(存储为字符串)。我试图做到如果 postNumber 与 for 语句迭代的键值匹配,它会打印键值对,然后用步骤数更新 postNumber 并将步骤更新为 1。目标是让它将每个键值对打印为

1 r
3 p 
6 q

但是,当我尝试运行它时,它没有给我任何输出。当我从代码中删除 postNumber += 步骤和步骤 += 1 时,我得到

1 r

然后,当我将两个变量方程放回到代码中时,它根本不给我任何输出,这对我来说没有意义,特别是考虑到它发生在 if 语句之后,所以它至少必须打印“ 1 r" 并且它没有嵌入到 if 语句中;只有 for 语句。

我尝试添加一个 else 语句,并使其和 if 语句都具有 postNumber += 步骤和步骤 += 1,看看它是否会改变任何内容,但无济于事。

python
1个回答
0
投票

如果您想按顺序遍历键/值对,那么您可能应该按排序顺序迭代键,并将它们用作字典的索引:

for key in sorted(results.keys()):
  value = results[key]
  print(f'{key} {value}')

我不太明白你想通过使用

steps
postNumber
来做什么,但在我看来,你试图混合两种方法:

  • 计算可能的数字,并且
  • 直接迭代字典
© www.soinside.com 2019 - 2024. All rights reserved.