我有一本字典,mydict
形状如下:
{'qui': [(4, 1), (3, 2), (10, 1)], 'voluptate': [(3, 1)], 'est': [(4, 1)], 'reprehenderit': [(3, 1)], 'cillum': [(3, 1), (9, 1)], 'irure': [(1, 1), (3, 1)], 'laboris': [(2, 1)], 'sit': [(1, 1)], 'sunt': [(4, 1)], 'eu': [(3, 1)], 'nisi': [(5, 1), (2, 1)]}
我需要先按字母顺序对键进行排序,然后完成操作,然后按元组中的第一个数字对元组进行排序。
我所看到的资源进行排序首先由键然后值,按字母顺序排序,并通过值,那么关键的排序,但毫无疑问,到目前为止已经有这个问题。
我试过使用,sorted_dict = sorted(d.keys())
但这只是按字母顺序返回键的列表,而不是它们的值
如何达到如下目标结果?:
{'cillum': [(3, 1), (9, 1)], 'est': [(4, 1)], 'eu': [(3, 1)], 'irure': [(1, 1), (3, 1)], 'laboris': [(2, 1)], 'nisi': [(2, 1), (5, 1)], 'qui': [(3, 2), (4, 1), (10, 1)], 'reprehenderit': [(3, 1)], 'sit': [(1, 1)], 'sunt': [(4, 1)], 'voluptate': [(3, 1)],}
python --version yields Python 3.6.7
正如@DeepSpace指出的那样,OP使用Python 3.6。
因此,dicts order是实现细节,我们必须使用OrderedDict。
这是我的版本:
from collections import OrderedDict
d = {'qui': [(4, 1), (3, 2), (10, 1)], 'voluptate': [(3, 1)], 'est': [(4, 1)], 'reprehenderit': [(3, 1)], 'cillum': [(3, 1), (9, 1)], 'irure': [(1, 1), (3, 1)], 'laboris': [(2, 1)], 'sit': [(1, 1)], 'sunt': [(4, 1)], 'eu': [(3, 1)], 'nisi': [(5, 1), (2, 1)]}
ordered_dict = OrderedDict()
sorted_keys = sorted(d.keys())
for key in sorted_keys:
sorted_values = sorted(d[key])
ordered_dict[key] = sorted_values
print(ordered_dict)
输出:
OrderedDict([('cillum', [(3, 1), (9, 1)]), ('est', [(4, 1)]), ('eu', [(3, 1)]), ('irure', [(1, 1), (3, 1)]), ('laboris', [(2, 1)]), ('nisi', [(2, 1), (5, 1)]), ('qui', [(3, 2), (4, 1), (10, 1)]), ('reprehenderit', [(3, 1)]), ('sit', [(1, 1)]), ('sunt', [(4, 1)]), ('voluptate', [(3, 1)])])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句