基于dict的值字符串中存在的“子字符串”排序字典列表

时间:2017-01-15 19:49:41

标签: python python-2.7 list sorting dictionary

我在python中有一个字典列表,名为all_data。由dict保留的每个all_data对象的结构是:

{
    'href': u'http://malc0de.com/database/index.php?search=c.img001.com', 
    'type': u'text/html', 
    'rel': u'alternate',
    'title': u'c.img001.com', 
    'summary': u'URL: c.img001.com/re58/girlshow_20300025849.exe, IP Address: 14.215.74.85, Country: CN, ASN: 58543, MD5: 31d5f481153ccd2829558720f8d90d81', 
    'title_detail': {
        'base': u'http://malc0de.com/rss/', 
        'type': u'text/plain', 
        'value': u'c.img001.com', 
        'language': None
     }
}

我想基于名称'Country'执行排序,该名称作为子字符串存在于'summary'键的值。字符串的内容如下:

u'URL: c.img001.com/re58/girlshow_20300025849.exe, IP Address: 14.215.74.85, Country: CN, ASN: 58543, MD5: 31d5f481153ccd2829558720f8d90d81', 

我想根据字母顺序中的list名称对dict Country进行排序。

1 个答案:

答案 0 :(得分:2)

由于您要排序的值'Country'在键'summary'中作为字符串的一部分出现;您必须首先提取'Country'的值才能执行排序。

一种方法是创建将str转换为dict的函数:

def get_dict_from_str(my_str):
    return dict(item.split(': ') for item in my_str.split(', '))

然后将此函数与 lambda函数一起使用sorted()作为:

sorted_list = sorted(dict_list, key=lambda x: get_dict_from_str(x['summary'])['Country'])

其中dict_list是包含问题中提到的格式字典的词典列表。