如何使用CSV对单元格中的单元格进行排序,以及使用Python2.7对应的单元格

时间:2015-04-20 04:56:06

标签: python-2.7 sorting

我有一个名为

的列表
l=[('Altamont','TN'),('Baxter','TN'),('Norway','SC'),('Trenton','SC')]

最初,大约为('cities', 'states')

根据州和城市进行排序,并在功能下方写入CSV

def calcDistance(self):
 filePath = self.dlg.fileNameEdit.text()
 l=[('Altamont','TN'),('Baxter','TN'),('Norway','SC'),('Trenton','SC')]
 sorted(l, key=operator.itemgetter(1,0))
self.writeToFile(l, filePath)

def writeToFile(self, l, filePath):
    fileCSV = open(filePath, "w")

    for i in l:
          fileCSV.write(i)
          fileCSV.write(",")
          fileCSV.write("\n")
          QMessageBox.information(self.dlg, "Number of Cities Near", str(len(lsOfCities)) + " citie(s) are written to "+filePath)
          fileCSV.close()
          self.dlg.close()

运行后,我将收到如下CSV文件:

'Baxter','TN'
'Altamont','TN'
'Trenton','SC'
'Norway','SC'

我想知道 Python2.7中是否有任何可能的方法,如果我对CSV的第二列(即状态)进行排序,那么对应的单元格应该还要排序?

'Norway','SC'
'Trenton','SC'
'Altamont','TN'
'Baxter','TN'

2 个答案:

答案 0 :(得分:2)

如果您想按state name排序,然后按city name排序,则流程代码为:

sorted(l, key=operator.itemgetter(1,0))

没有任何意义,因为l仍然是不可变的。你应该重新分配:

l = sorted(l, key=operator.itemgetter(1,0))

在这次排序之后,我尝试了我的电脑:

>>> l = [('Altamont','TN'),('Baxter','TN'),('Norway','SC'),('Trenton','SC')]
>>> import operator
>>> l = sorted(l, key = operator.itemgetter(1,0))
>>> l
[('Norway', 'SC'), ('Trenton', 'SC'), ('Altamont', 'TN'), ('Baxter', 'TN')]

答案 1 :(得分:0)

您的问题是您正在对列表进行排序,而不是将其分配给任何内容。

def calcDistance(self):
  filePath = self.dlg.fileNameEdit.text()
  l = [('Altamont','TN'),('Baxter','TN'),('Norway','SC'),('Trenton','SC')]
  l = sorted(l, key=operator.itemgetter(1,0))

见下面的例子:

>>> a = [4,3,2]
>>> sorted(a)
[2, 3, 4]
>>> a
[4, 3, 2]
>>>