Python中这两个数据结构有什么不同,为什么我不能对它们进行排序?

时间:2014-11-08 00:00:02

标签: python python-2.7

我这里有两个单独的列表,并不太明白它们之间的区别。最终,我想对它们进行排序,但不知道要使用哪种数据类型。两者都不起作用。

mylist = [('Andrew','10')('Jim',"20"),("Sarah","30"),("Jim","23"),("Andrew","54")]
mylist1 = [['Andrew','10']['Jim',"20"],["Sarah","30"],["Jim","23"],["Andrew","54"]]
sorted(mylist)
sorted(mylist1)
print mylist
print mylist1

2 个答案:

答案 0 :(得分:1)

你做了一个拼写错误,省略了第一个和第二个元素之间的昏迷:

mylist = [('Andrew','10')('Jim',"20")

Python将此解释为对('Andrew','10')的调用,但当然元组不可调用,因此错误。

此外,如果要对列表进行排序,则需要使用mylist.sort()sorted()内置函数返回一个副本,因此如果要使用它,则应该使用:

sortedList = sorted(myList)

答案 1 :(得分:0)

列表之间的区别在于,一个是列表列表,而另一个是元组列表。有关详细信息,请参阅:What's the difference between lists and tuples?。在这种情况下,它们之间没有太大区别。

要按名称排序,然后按数字排序,您只需使用mylist.sort()

要按编号排序,您可以使用mylist.sort(key = lambda item: item[1])

相关问题