我在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
进行排序。
答案 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
是包含问题中提到的格式字典的词典列表。