Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 如何打印按子词典值排序的词典?_Sorting_Python 3.x_Dictionary_Printing - Fatal编程技术网

Sorting 如何打印按子词典值排序的词典?

Sorting 如何打印按子词典值排序的词典?,sorting,python-3.x,dictionary,printing,Sorting,Python 3.x,Dictionary,Printing,我在字典中有一个字典,我希望打印整个字典,但在子字典中按值排序 Lesson = {Name:{'Rating':Rating, 'Desc':Desc, 'TimeLeftTask':Timeleft}} 或 例如,我想打印这篇文章,但按“评级”(顶部的高数字)排序 我读过这篇文章,但并不完全理解。 如果你能保持简单,那就太好了。 是的,我正在制作一个程序来整理和处理我的家庭作业 提前谢谢 def sort_by_subdict(dictionary, subdict_key): r

我在字典中有一个字典,我希望打印整个字典,但在子字典中按值排序

Lesson = {Name:{'Rating':Rating, 'Desc':Desc, 'TimeLeftTask':Timeleft}}

例如,我想打印这篇文章,但按“评级”(顶部的高数字)排序
我读过这篇文章,但并不完全理解。 如果你能保持简单,那就太好了。
是的,我正在制作一个程序来整理和处理我的家庭作业
提前谢谢

def sort_by_subdict(dictionary, subdict_key):
    return sorted(dictionary.items(), key=lambda k_v: k_v[1][subdict_key])

Lesson = {'Math':{'Rating':11, 'Desc':'Exercises 14 and 19 page 157', 'TimeLeftTask':7}, 'English':{'Rating':23, 'Desc':'Exercise 5 page 204', 'TimeLeftTask':2}}
print(sort_by_subdict(Lesson, 'Rating'))
由于中没有顺序的概念,我们需要将字典表示为键、值对元组列表,以保持排序顺序


您提到的使用函数对字典进行排序,以便返回顶级字典的
(k,v)
元组列表(此处
k
表示键和
v
表示值),按子字典的所需值排序
v

您链接的问题回答您的问题。你试过把它应用到你的字典上吗?你不明白什么?问题的可能重复是,它给了我一个语法错误,因为我不理解我在做什么,我无法修复它,当我这样做时,我会得到无效的语法。我在Python3.4上,顺便说一句,错误是关于排序的(dictionary.iteritems(),key=lambda(k,v):v[key\u in_values]),更具体地说是关于key=lambda这里-->(@thedoublet)在Python3中你必须这样做:
key=lambda k_v:k_v[1][key\u in_值]
我得到这一行148,作为排序的回报(dictionary.items(),key=lambda k_v:k_v[1][key_in_values])名称错误:名称“key_in_values”不正确defined@TheD0ubleT,我已经在python3的答案中移植了代码,并在python3.4上进行了测试。此外,必须抛出NameError,因为name
key\u in\u values
更改为
subct\u key
:-)最后,它是从最低到最高(升序)排列的,我希望它能按顺序排列,可以吗?
def sort_by_subdict(dictionary, subdict_key):
    return sorted(dictionary.items(), key=lambda k_v: k_v[1][subdict_key])

Lesson = {'Math':{'Rating':11, 'Desc':'Exercises 14 and 19 page 157', 'TimeLeftTask':7}, 'English':{'Rating':23, 'Desc':'Exercise 5 page 204', 'TimeLeftTask':2}}
print(sort_by_subdict(Lesson, 'Rating'))