<p>我假设给定一个包含用户名和测验分数的csv文件,您希望读取csv文件,然后根据用户名进行排序。您的问题(我相信)是每次从csv文件中读取时,都会得到一个表单<code>[user_name, score1, score2, score3]</code>的列表。在</p>
<p>如果是这样,为什么不将每个这样的列表存储在字典中,使用用户名作为键,然后对字典键进行排序-即</p>
<pre><code>sorting_dict = {}
for curr_elem in readCSV:
sorting_dict[curr_elem[0]] = curr_elem #Note this assumes no 2 users have the same name
sorted_names = sorted(sorting_dict.keys()) # actually sorted(sorting_dict) will also work and may be preferred, but '.keys()' makes it clearer for me
</code></pre>
<p>现在,您可以按排序顺序访问记录:</p>
^{pr2}$
<p>=======================================================</p>
<p>嗯,嗯。。。很奇怪这对你没用。我做了一个像你描述的虚拟文件,这是对我有用的:</p>
<pre><code>>>> f=open('csv.txt','r')
>>> readCSV = csv.reader(f)
>>> for curr_elem in readCSV:
... sorting_dict[curr_elem[0]] = curr_elem
...
>>> sorted_names = sorted(sorting_dict.keys())
>>> sorted_names
['art', 'bob', 'dick', 'harry', 'tom']
>>> for curr_user in sorted_names:
... print sorting_dict[curr_user]
...
['art', '77', '99', '98']
['bob', ' 88', '99', '78']
['dick', '77', '66', '99']
['harry', '90', '78', '98']
['tom', '33', '98', '67']
>>>
</code></pre>
<p>我的csv.txt文件文件是:</p>
<pre><code>bob, 88,99,78
art,77,99,98
tom,33,98,67
dick,77,66,99
harry,90,78,98
</code></pre>
<p>这里唯一的问题是你需要确保“harry”行不是以<code>\n</code>结尾,否则csv阅读器将读取一个空行,它将在<code>sorting_dict[curr_elem[0]] = curr_elem</code>处抛出一个错误,但是你可以很容易地防范这一点。在</p>