如果您想了解python中如何按值对字典排序?和python根据值对字典排序的知识,那么本篇文章将是您的不二之选。我们将深入剖析python中如何按值对字典排序?的各个方面,并为您解答python根据
如果您想了解python中如何按值对字典排序?和python根据值对字典排序的知识,那么本篇文章将是您的不二之选。我们将深入剖析python中如何按值对字典排序?的各个方面,并为您解答python根据值对字典排序的疑在这篇文章中,我们将为您介绍python中如何按值对字典排序?的相关知识,同时也会详细的解释python根据值对字典排序的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- python中如何按值对字典排序?(python根据值对字典排序)
- python – 如何按这两个值对这个元组列表进行排序?
- Python-如何按键对字典排序?
- Python-如何根据字典的值对字典列表进行排序?
- Python中 字典排序、列表排序
python中如何按值对字典排序?(python根据值对字典排序)
我有一个从数据库中的两个字段读取的值字典:字符串字段和数字字段。字符串字段是唯一的,因此这是字典的键。
我可以对键进行排序,但是如何根据值进行排序?
答案1
小编典典Python 3.7+或CPython 3.6
字典在Python 3.7+中保留插入顺序。在CPython 3.6中相同,但是它是一个实现细节。
>>> x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}>>> {k: v for k, v in sorted(x.items(), key=lambda item: item[1])}{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}
要么
>>> dict(sorted(x.items(), key=lambda item: item[1])){0: 0, 2: 1, 1: 2, 4: 3, 3: 4}
较旧的Python
无法对字典进行排序,只能获得已排序字典的表示形式。字典本质上是无序的,但其他类型(例如列表和元组)不是。因此,你需要一种有序的数据类型来表示排序后的值,这将是一个列表-可能是元组列表。
例如,
import operatorx = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}sorted_x = sorted(x.items(), key=operator.itemgetter(1))
sorted_x
将是按每个元组中第二个元素排序的元组列表。dict(sorted_x) == x
。
对于那些希望对键而不是值进行排序的人:
import operatorx = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}sorted_x = sorted(x.items(), key=operator.itemgetter(0))
在Python3中,由于不允许拆包[1],我们可以使用
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}sorted_x = sorted(x.items(), key=lambda kv: kv[1])
如果要将输出作为字典,则可以使用collections.OrderedDict:
import collectionssorted_dict = collections.OrderedDict(sorted_x)
python – 如何按这两个值对这个元组列表进行排序?
我想以两种方式对此列表进行排序:
首先是它的第一个值乘以升值,即1,2,3 ……等
其次是按反向字母顺序排列的第二个值,即Operation.SUBSTITITUTED,Operation.INSERTED,Operation,DELETED
所以上面的列表应该排序为:
[(1,Operation.INSERTED)]
我如何排序此列表?
解决方法
lst = [(2,'Operation.SUBSTITUTED'),'Operation.DELETED'),'Operation.INSERTED')] res_int = sorted(lst,key=lambda x: x[1],reverse=True) res = sorted(res_int,key=lambda x: x[0]) print(res) # [(1,'Operation.INSERTED')]
Python-如何按键对字典排序?
如何解决Python-如何按键对字典排序??
标准Python字典是无序的。即使你对(key,value)对进行了排序,也无法以dict
保留顺序的方式存储它们。
最简单的方法是使用OrderedDict,它可以记住元素插入的顺序:
In [1]: import collections
In [2]: d = {2:3, 1:89, 4:5, 3:0}
In [3]: od = collections.OrderedDict(sorted(d.items()))
In [4]: od
Out[4]: OrderedDict([(1, 89), (2, 3), (3, 0), (4, 5)])
没关系od打印方式;它会按预期工作:
In [11]: od[1]
Out[11]: 89
In [12]: od[3]
Out[12]: 0
In [13]: for k, v in od.iteritems(): print k, v
....:
1 89
2 3
3 0
4 5
Python 3
对于Python 3用户,需要使用.items()而不是.iteritems():
In [13]: for k, v in od.items(): print(k, v)
....:
1 89
2 3
3 0
4 5
解决方法
这将是一个很好的方式,从去{2:3,1:89,4:5,3:0}
到{1:89,2:3,3:0,4:5}?
我检查了一些帖子,但它们都使用了返回元组的”sorted” 运算符。
Python-如何根据字典的值对字典列表进行排序?
如何解决Python-如何根据字典的值对字典列表进行排序??
使用密钥而不是cmp看起来更干净:
newlist = sorted(list_to_be_sorted, key=lambda k: k[''name''])
或如JFSebastian和其他人所建议的,
from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter(''name''))
为了完整性(如fitzgeraldsteele的评论中指出的那样),请添加reverse=True降序排列
newlist = sorted(l, key=itemgetter(''name''), reverse=True)
解决方法
我有一个字典列表,希望每个项目都按特定的属性值排序。
考虑下面的数组,
[{''name'':''Homer'',''age'':39},{''name'':''Bart'',''age'':10}]
当排序name,应该成为
[{''name'':''Bart'',''age'':10},{''name'':''Homer'',''age'':39}]
Python中 字典排序、列表排序
一、字典排序
在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的。因此,为了使统计得到的结果更方便查看需要进行排序。Python中字典的排序分为按“键”排序和按“值”排序。
1、按“值”排序
按“值”排序就是根据字典的值进行排序,可以使用内置的sorted()函数。
sorted(iterable[, cmp[, key[, reverse]]])
(1)iterable:是可迭代类型类型;
(2)cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;
(3)key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
(4)reverse:排序规则. reverse = True 或者 reverse = False,有默认值,默认为升序排列(False)。
返回值:是一个经过排序的可迭代类型,与iterable一样。一般来说,cmp和key可以使用lambda表达式。
如果对字典进行排序,常用的形式如下:sorted(dict.items(), key=lambda e:e[1], reverse=True), 其中e表示dict.items()中的一个元素,e[1]则表示按 值排序如果把e[1]改成e[0],那么则是按键排序,reverse=False可以省略,默认为升序排列。
说明:字典的items()函数返回的是一个列表,列表的每个元素是一个键和值组成的元组。因此,sorted(dict.items(), key=lambda e:e[1], reverse=True)返回的值同样是由元组组成的列表。
使用示例代码:
user={}
#
#填充字典
#
sort=sorted(user.items(),key=lambda e:e[1],reverse=True) #排序
for item in sort:
print >>fp,"%-30s %s" %(item[0],item[1])
2、按“键”排序
对字典进行按键排序也可以使用上面的sorted函数,只要改为sorted(dict.items(), key=lambda e:e[0], reverse=True)就可以了。不过除了这个方式之外,还有另外的方法:通过列表的排序来达到使字典有序的目的。
用到的知识:字典的keys()函数返回列表形式的键值,将该列表排序即可。列表的排序使用列表的sort()函数,详细内容参考列表排序。
总结:
方法1:最简单的方法,排列元素(key/value对),然后挑出值。字典的items方法,会返回一个元组的列表,其中每个元组都包含一对项目 ——键与对应的值。此时排序可以sort()方法。
def sortedDictValues1(adict):
items = adict.items()
items.sort()
return [value for key, value in items]
方法2:使用排列键(key)的方式,挑出值,速度比方法1快。字典对象的keys()方法返回字典中所有键值组成的列表,次序是随机的。需要排序时只要对返回的键值列表使用sort()方法。
def sortedDictValues1(adict):
keys = adict.keys()
keys.sort()
return [adict[key] for key in keys]
方法3:通过映射的方法去更有效的执行最后一步
def sortedDictValues1(adict):
keys = adict.keys()
keys.sort()
return map (adict.get,keys )
方法4:对字典按键排序,用元组列表的形式返回,同时使用lambda函数来进行;
sorted(iterable[, cmp[, key[, reverse]]]
cmp和key一般使用lambda
如:
>>> d={"ok":1,"no":2}
对字典按键排序,用元组列表的形式返回
>>> sorted(d.items(), key=lambda d:d[0])
[(''no'', 2), (''ok'', 1)]
对字典按值排序,用元组列表的形式返回
>>> sorted(d.items(), key=lambda d:d[1])
[(''ok'', 1), (''no'', 2)]
二、列表排序
对列表进行排序使用列表的sort()函数。
1、sort()函数
sort()函数使用固定的排序算法对列表排序。sort()函数对列表排序时改变了原来的列表,从而让其中的元素能按一定的顺序排列,而不是简单的返回一个已排序的列表副本。
注意sort()函数改变原来的列表,函数返回值是空值即None。因此,如果需要一个已排好序的列表副本,同时又要保留原有列表不变的时候,就不能直接简单的使用sort()函数。为了实现上述功能使用sort()的方法是:先获取列表X的副本Y,然后再对Y进行排序。代码如下:
x=[4,6,2,1,7,9,4]
y=x[:]
y.sort()
print x
print y
结果如下:
[4, 6, 2, 1, 7, 9, 4]
[1, 2, 4, 4, 6, 7, 9]
说明:调用x[:]得到的是包含了x所有元素的分片,这是一种很有效率的复制整个列表的方法。通过y=x简单的将x复制给y是没有用的,因为这样做就让x和y都指向了同一个列表了。
2、sorted()
另外一种获取已排序的列表副本的方法是使用sorted()函数。注意,sorted()函数可以用于任何可迭代的对象。
x=[4,6,2,1,7,9,4]
y=sorted(x)
print x
print y
结果:
[4, 6, 2, 1, 7, 9, 4]
[1, 2, 4, 4, 6, 7, 9]
关于python中如何按值对字典排序?和python根据值对字典排序的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于python – 如何按这两个值对这个元组列表进行排序?、Python-如何按键对字典排序?、Python-如何根据字典的值对字典列表进行排序?、Python中 字典排序、列表排序等相关知识的信息别忘了在本站进行查找喔。
本文标签: