Python中dict的排序方法(按key或按value)

转载自http://hi.baidu.com/jackleehit/blog/item/53da32a72207bafa9052eea1.html

我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value。可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排。到底有多少种方法可以实现对dictionary的内容进行排序输出呢?下面摘取了 一些精彩的解决办法。 


按key排序

#最简单的方法,这个是按照key值排序: 
def sortedDictValues1(adict): 
items = adict.items() 
items.sort() 
return [value for key, value in items] 

#又一个按照key值排序,貌似比上一个速度要快点 
def sortedDictValues2(adict): 
keys = adict.keys() 
keys.sort() 
return [dict[key] for key in keys] 

#还是按key值排序,据说更快。。。而且当key为tuple的时候照样适用 
def sortedDictValues3(adict): 
keys = adict.keys() 
keys.sort() 
return map(adict.get, keys) 

#一行语句搞定: 
[(k,di[k]) for k in sorted(di.keys())] 


按value排序

#来一个根据value排序的,先把item的key和value交换位置放入一个list中,再根据list每个元素的第一个值,即原来的value值,排序: 
def sort_by_value(d): 
items=d.items() 
backitems=[[v[1],v[0]] for v in items] 
backitems.sort() 
return [ backitems[i][1] for i in range(0,len(backitems))] 

#还是一行搞定: 
[ v for v in sorted(di.values())] 

#用lambda表达式来排序,更灵活: 
sorted(d.items(), lambda x, y: cmp(x[1], y[1])), 或反序: 
sorted(d.items(), lambda x, y: cmp(x[1], y[1]), reverse=True) 

#用sorted函数的key= 参数排序: 
# 按照key进行排序 
print sorted(dict1.items(), key=lambda d: d[0]) 
# 按照value进行排序 
print sorted(dict1.items(), key=lambda d: d[1]) 


下面给出python内置sorted函数的帮助文档: 
sorted(...) 
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list 

看了上面这么多种对dictionary排序的方法,其实它们的核心思想都一样,即把dictionary中的元素分离出来放到一个list中,对list排序,从而间接实现对dictionary的排序。这个“元素”可以是key,value或者item。 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Python,可以使用字典(dict)的get()方法来获取指定keyvalue。例如: ``` my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'} value = my_dict.get('name') print(value) # 输出:Tom ``` 如果指定的key不存在,get()方法会返回None或者指定的默认值。例如: ``` my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'} value = my_dict.get('height', 170) print(value) # 输出:170 ``` 另外,也可以直接使用字典[key]的方式来获取指定keyvalue。但是,如果指定的key不存在,会抛出KeyError异常。例如: ``` my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'} value = my_dict['name'] print(value) # 输出:Tom value = my_dict['height'] # 抛出KeyError异常 ``` ### 回答2: PythonDict获取keyValuePython,字典(Dict)是一种非常有用的数据类型,它允许我们通过键(Key)来获取值(Value)。在Python,可以使用\[\]运算符或get()方法来获取字典给定keyvalue,下面分别介绍。 使用 \[\] 运算符获取keyvalue 当我们想要获取字典某个key对应的value时,可以通过使用\[\]运算符来进行获取。假设我们有如下的一个字典: ``` # 创建一个字典 my_dict = {'name': '张三', 'age': 18, 'city': '北京'} ``` 现在我们想要获取key为"name"对应的value,可以使用以下代码: ``` # 使用 [] 运算符获取 keyvalue my_dict['name'] # '张三' ``` 通过以上代码,我们就可以获取到对应的value了。 但是这种方法会在找不到key时抛出KeyError异常,则需要在使用时加入异常检测语句。如下所示: ``` try: value = my_dict['职业'] except KeyError as e: print("KeyError : ", str(e)) ``` 使用get()方法获取keyvalue 与使用\[\]运算符获取value不同的是,使用get()方法获取keyvalue可避免抛出KeyError异常。如果字典不存在指定的key,则get()方法返回None或指定的默认值。 利用get()方法获取keyvalue非常简单,只需要将要获取的key作为参数传递给get()方法即可,如下所示: ``` # 使用 get() 方法获取 keyvalue my_dict.get('name') # '张三' my_dict.get('profession', '未知') # '未知' ``` 上述第一个get()方法会返回key为"name"的value,第二个get()方法会返回"profession"对应的value,因为在字典找不到该key,所以使用默认值"未知"代替。 小结 Python提供了两种简单的方式来获取字典的key对应的value,即使用\[\]运算符和get()方法。两者的不同点主要在于,前者在找不到指定的key时会抛出KeyError异常,而后者可以返回None或指定的默认值。在使用时应按照具体情况来选择合适的方法。 ### 回答3: 在Pythondict是一个非常常用的数据结构,它可以存储一组键值对。使用dict可以非常方便地通过键获取值,这也是dict的主要用途之一。 获取dict某个键对应的值可以使用下标访问的方式,即使用dict[key]的方式。这个操作不仅可以用于获取值,还可以用于修改、删除和添加键值对。如果key不存在于dict,则会抛出一个KeyError异常。 如果我们只想获取dict某个键对应的值而不想抛出异常,可以使用get()方法。get()方法接受一个参数,即要获取的键值,如果键存在,则返回对应的值,如果键不存在,则返回None,而不会抛出异常。 除了get()方法之外,还可以使用keys()方法values()方法获取dict的所有键和所有值。使用items()方法则可以同时获取所有的键值对,返回一个可迭代的对象,每个元素是一个包含键值对的元组。 总的来说,获取dict某个键对应的值有以下几种方式: 1.使用dict[key]的方式获取,如果key不存在会抛出异常。 2.使用get()方法获取,如果key不存在则返回None,不会抛出异常。 3.使用keys()方法获取所有的键,使用values()方法获取所有的值,使用items()方法获取所有的键值对,然后根据需要进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值