python二维列表转字典_python 多维数组排序 和 两个list生成dict

python 多维数组排序

想到排序,先想到了生成字典再排序,实现起来很麻烦。后来找到了按照list排序的方法。

python将两个list元素一一对应转换为dict

>>>names = ['n1','n2','n3']

>>>values = [1,2,3]

>>>nvs = zip(names,values)

>>>nvDict = dict( (name,value) for name,value in nvs)

不过要实现排序,转换为dict类型后更加麻烦。

以排序为目标的话可以创建多维数组,然后使用list.sort()进行排序,排序时会根据复数数组中第一个元素进行排序[(a,x,l),(b,y,m)(c,z,n)],使用sort()函数会根据a,b,c的顺序取排列。

单个数组的排序很简单,直接用sort就能完成,如一下ipython代码:

>>>array = [4, 2, 5, 1, 3]

>>>array.sort()

>>>array

>>>[1, 2, 3, 4, 5]

多维数组的排序如直接用sort讲会按第一维的数据进行排序,如:

>>>array = [ ['b', 4], ['e', 2], ['a', 5], ['d', 1], ['c', 3] ]

>>>array.sort()

>>>array

>>>[ ['a', 5], ['b', 4], ['c', 3], ['d', 1], ['e', 2] ]

如何按第二维的数据进行排序呢,我们可以用sort函数中的key形参,代码接上,如:

>>>array.sort(key=lambda x:x[1])#lambda x:x[1]返回list的第二个数据

>>>array

>>>[ ['d', 1], ['e', 2], ['c', 3], ['b', 4], ['a', 5] ]

也可以用一个函数实现,比较直接,如:

In [55]: def sort(a):

....: for k in xrange(len(a)):

....: (a[k][0], a[k][1]) = (a[k][1], a[k][0])

....: a.sort()

....: for k in xrange(len(a)):

....: (a[k][0], a[k][1]) = (a[k][1], a[k][0])

....:

>>>array = [ ['b', 4], ['e', 2], ['a', 5], ['d', 1], ['c', 3] ]

>>>sort(array)

>>>array

>>>[ ['d', 1], ['e', 2], ['c', 3], ['b', 4], ['a', 5] ]

reverse()方法

将列表中元素反转排序,比如下面这样

>>> x = [1,5,2,3,4]

>>> x.reverse()

>>> x

[4, 3, 2, 5, 1]

reverse列表反转排序:是把原列表中的元素顺序从左至右的重新存放,而不会对列表中的参数进行排序整理。如果需要对列表中的参数进行整理,就需要用到列表的另一种排序方式sort正序排序。

sort()排序方法

此函数方法对列表内容进行正向排序,排序后的新列表会覆盖原列表(id不变),也就是sort排序方法是直接修改原列表list排序方法。

>>> a = [5,7,6,3,4,1,2]

>>> a.sort()

>>> a

[1, 2, 3, 4, 5, 6, 7]

在玩蛇网许多python初学者,对sort()方法比较糊涂。有的时候会需要一个排序好的列表,而又想保存原有未排序列表,他们会这么操作:

>>> a = [5,7,6,3,4,1,2]

>>> b = a.sort()

>>> print b

None

这个时候问题出现了,变量b得到的是一个空值。那么想要得到排序好的列表,又想保留原列表怎么办呢?列表sorted()方法可以帮你实现。

sorted()方法

即可以保留原列表,又能得到已经排序好的列表sorted()操作方法如下:

>>> a = [5,7,6,3,4,1,2]

>>> b = sorted(a)

>>> a

[5, 7, 6, 3, 4, 1, 2]

>>> b

[1, 2, 3, 4, 5, 6, 7]

sorted()方法可以用在任何数据类型的序列中,返回的总是一个列表形式:

>>> sorted('iplaypython.com')

['.', 'a', 'c', 'h', 'i', 'l', 'm', 'n', 'o', 'o', 'p', 'p', 't', 'y', 'y']

本文讲解的是Python列表最基础的排序方法,列表还有更高级的排序方法,比如可以在方法内加入排序条件,这些会在列表高级排序方法文章中为大家介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值