<p>我试图比较两个字典数组之间的索引值。为此,我使用了嵌套for循环。当循环正确地迭代时,有一个问题,<code>firstDataSetNumber</code>没有在嵌套for循环内迭代(由第二个print语句指示)。第一个print语句显示for循环正在正确地迭代。是什么原因导致嵌套for循环中从第二个<code>firstDataSetNumber</code>打印的值永远不会更改,即使第一个print语句中的值表明它确实在正确迭代?你知道吗</p>
<pre><code>def processCommandCenterFile(data):
firstDataSet = data["FirstDataSet"]
secondDataSet = data["SecondDataSet"]
# Go through every First Data Set Record
for firstDataSetRecord in firstDataSet:
firstDataSetNumber = firstDataSetRecord["KeyOne"].strip()
matchingSecondDataSetRecord = None
print(firstDataSetNumber) # Always iterates properly throughout the application
# Find the Second Data Set record with the KeyTwo number
for secondDataSetRecord in secondDataSet:
print(firstDataSetNumber) # Never iterates past the first value
if secondDataSetRecord["KeyTwo"].strip() == firstDataSetNumber:
matchingSecondDataSetRecord = secondDataSetRecord
data = {
"FirstDataSet": CsvToDictionary("first_data_set.csv"),
"SecondDataSet": CsvToDictionary("second_data_set.csv")
}
processCommandCenterFile(data)
</code></pre>
<p>我希望两个print语句的输出是相同的。但是,当我运行它时,第一个print语句是索引中的每一项,而第二个print语句中的数据则被卡在列表中的第一项上。你知道吗</p>
<p>FirstDataSet和SecondDataSet键存储以下函数的输出,该函数加载CSV并将其转换为字典,其中CSV的头作为键。你知道吗</p>
<pre><code>import csv
def CsvToDictionary(path):
file = open(path, 'r')
rawCsvArray = csv.reader(file, delimiter=',', quotechar='|')
headers = rawCsvArray.next()
dataDictionary = csv.DictReader(file, fieldnames=headers)
return dataDictionary
</code></pre>
<p>以下是用于生成<code>FirstDataSet</code>的CSV</p>
<pre><code>KeyOne
143739629
143739629
143750196
143750196
143739646
143739646
143739661
143739661
143739718
</code></pre>
<p>然后是用来制作<code>SecondDataSet</code>的CSV</p>
<pre><code>KeyTwo
143739629
143739629
143750196
143750196
143739646
143739646
143739661
143739661
143739718
</code></pre>