<p>下面的方法与您的实现非常接近,我认为它可能有用。但是,如果您开始处理更大或更复杂的csv文件,您应该查看类似于csv.reader或“熊猫”(如前所述)。它们在处理复杂的.csv数据时更加健壮和高效。你也可以使用“xlrd”包在Excel中工作。在</p>
<p>在我看来,引用国家名称和它们各自的值的最简单的解决方案是组合您的“for循环”。不要在数据中循环两次(在两个单独的“for循环”中)和创建两个单独的列表,而是使用一个“for循环”并创建一个包含相关数据的字典(即“country name”、“hdi”)。您也可以创建元组(如前所述),但我认为字典更显式。在</p>
<pre><code>myfile = open("/Users/it/Desktop/Python/In-Class Programs/countries.csv", "rb")
countries = []
for line in myfile:
country_name = line.split(",")[1]
value_of_interest = float(line.split(",")[3])
countries.append(
{"Country Name": country_name,
"Value of Interest": value_of_interest})
ave_value = sum([country["Value of Interest"] for country in countries])/len(countries)
max_value = max([country["Value of Interest"] for country in countries])
min_value = min([country["Value of Interest"] for country in countries])
print "Country Average == ", ave_value
for country in countries:
if country["Value of Interest"] == max_value:
print "Max == {country}:{value}".format(country["Country Name"], country["Value of Interest"])
if country["Value of Interest"] == min_value:
print "Min == {country}:{value}".format(country["Country Name"], country["Value of Interest"])
</code></pre>
<p>请注意,如果多个国家的最小值/最大值相等,则此方法将返回多个国家。在</p>
<p>如果您不想创建单独的列表(比如您当前的实现),可以考虑使用zip()连接列表(按索引),其中</p>
^{pr2}$
<p>例如:</p>
<pre><code>for country in zip(countries, hdi_list):
if country[1] == max_value:
print country[0], country[1]
</code></pre>
<p>把类似的逻辑应用到最小值和平均值。这种方法有效,但不太明确,更难维护。在</p>