python list排序,list嵌套字典根据key排序

1.给字典按照value按照从大到小排序

排序

dict = {'a':21, 'b':5, 'c':3, 'd':54, 'e':74, 'f':0}
new_dict = sorted(dict.iteritems(), key=lambda d:d[1], reverse = True)
print new_dict

 

输出 
 

2. python按照list中的字典的某key排序:

例子:

s=[
{"no":28,"score":90},
{"no":25,"score":90},
{"no":1,"score":100},
{"no":2,"score":20},

]
print "original s: ",s
# 单级排序,仅按照score排序
new_s = sorted(s,key = lambda e:e.__getitem__('score'))
print "new s: ", new_s
# 多级排序,先按照score,再按照no排序
new_s_2 = sorted(new_s,key = lambda e:(e.__getitem__('score'),e.__getitem__('no')))
print "new_s_2: ", new_s_2

输出:

说明

1.new_s和new_s2的区别在于当score均为90的时候,重新按照no排序

2.顺序为从小到大,若在sorted函数的参数加上reverse = True则为从大到小

转载于:https://my.oschina.net/u/3771014/blog/1932679

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要移除多层嵌套字典的某个键,可以使用递归的方法来实现。以下是一个例子: ```python def remove_key(d, key): """ 递归地删除字典中的指定键 """ if key in d: del d[key] for k, v in d.items(): if isinstance(v, dict): remove_key(v, key) ``` 这个函数 `remove_key` 接受两个参数:第一个是要删除键的字典,第二个是要删除的键。该函数首先检查当前字典是否包含指定的键,如果是,则使用 `del` 语句删除它。然后,它遍历字典中的每个键值对,如果当前值是一个字典,那么递归调用 `remove_key` 函数来删除该值中的指定键。 以下是一个使用示例,假设我们要删除字典 `d` 中的键 `'b'`: ```python d = {'a': 1, 'b': 2, 'c': {'d': 3, 'e': {'f': 4, 'b': 5}}} remove_key(d, 'b') print(d) ``` 输出结果应该是: ``` {'a': 1, 'c': {'d': 3, 'e': {'f': 4}}} ``` 可以看到,字典 `d` 中的键 `'b'` 已经被递归地删除了。 ### 回答2: 要移除多层嵌套字典中的某个key,可以使用递归函数。递归是指一个函数在内部调用自身的一种方法。 在Python中,可以通过以下的递归函数来移除多层嵌套字典中的某个key: ```python def remove_key(nested_dict, key): if isinstance(nested_dict, dict): # 如果当前对象是字典 if key in nested_dict: # 如果key存在于字典中 del nested_dict[key] # 删除key else: for k, v in nested_dict.items(): # 遍历字典中的每个key-value对 remove_key(v, key) # 递归调用函数,处理value elif isinstance(nested_dict, list): # 如果当前对象是列表 for item in nested_dict: # 遍历列表中的每个元素 remove_key(item, key) # 递归调用函数,处理元素 ``` 这个函数首先判断当前对象是否是字典,如果是字典,则检查字典中是否存在目标key。如果存在,就使用`del`语句将该key删除。如果不存在,则递归地调用函数,处理字典中的每个value。 如果当前对象不是字典,而是列表,则遍历列表中的每个元素,并递归地调用函数,处理每个元素。 这样你就可以通过调用这个函数,来移除多层嵌套字典中的某个key了。 ### 回答3: Python中可以通过递归的方式移除多层嵌套字典中的某个key。 假设我们有一个多层嵌套字典`my_dict`,其中包含了多层的嵌套字典和列表,我们要移除其中的某个key,可以使用以下代码实现: ```python def remove_key(dictionary, key): for k, v in dictionary.items(): if k == key: # 找到目标key del dictionary[k] # 直接删除该键值对 elif isinstance(v, dict): # 如果值是字典类型 remove_key(v, key) # 递归调用remove_key函数,继续在字典中查找目标key elif isinstance(v, list): # 如果值是列表类型 for item in v: # 遍历列表中的每一个元素 if isinstance(item, dict): # 如果列表元素是字典类型 remove_key(item, key) # 递归调用remove_key函数,继续在字典中查找目标key return dictionary # 测试例子 my_dict = { 'a': { 'b': { 'c': 1, 'd': 2 }, 'e': { 'f': { 'g': 3, 'h': 4 } } } } result = remove_key(my_dict, 'd') print(result) ``` 以上代码中,`remove_key`函数接收两个参数,`dictionary`为要进行操作的字典,`key`为要移除的目标键。函数通过遍历字典中的每一个键值对,如果遇到目标键,则直接删除该键值对;如果遇到值为字典类型的键值对,则递归调用自身继续查找目标键;如果遇到值为列表类型的键值对,则遍历列表中的每一个元素,如果元素是字典类型,则递归调用自身继续查找目标键。最后返回修改后的字典
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值