致力于创建基本的学生/成绩词典。我有一个工作解决方案,读取一行输入,然后将键/值对存储在字典中。代码读作:
student_scores = {}
for _ in range(int(input())):
key, value = input(), input()
student_scores[key] = value
print(student_scores)
代码的示例输入是:
2
John
50
Mary
47
这很好用,给出了预期的(对我来说)输出:
{'John ': '50'}
{'John ': '50', 'Mary': '47'}
但是,当我尝试压缩输入以直接进入字典...
student_scores = {}
for _ in range(int(input())):
student_scores[input()] = input()
print(student_scores)
对于与上面完全相同的输入,键/值对被反转,输出put为:
{'50': 'John '}
{'47': 'Mary', '50': 'John '}
问题是,为什么Python会颠倒输入的顺序以及在单行代码中读取此内容的正确格式是什么?虽然我有一个可行的解决方案,但我觉得有一些根本的东西,我不理解输入()或字典的构建。对不起基本问题,现在只使用Python大约一个月了。
答案 0 :(得分:0)
与Java不同,Python在评估左侧的任何表达式之前,会完全评估赋值的右侧。这意味着在
student_scores[input()] = input()
评估顺序
input()
student_scores
input()
然后是作业。因此,首先评估右侧的input()
,与
key, value = input(), input()
左边的input()
首先评估,input()
调用读取输入的顺序相反。
对此没有一个好的单线。坚持两行应该没问题。