Python-按len(值)对字典{字符串键:字符串列表}排序?

Python-按len(值)对字典{字符串键:字符串列表}排序?,python,sorting,dictionary,Python,Sorting,Dictionary,假设我有以下词典: {"A":["u","w"],"B":["t"],"C":["x","y","z"]} 如何按每个值的列表中的字符串数对字典进行排序,以便它返回: [("C",["x","y","z"]), ("A",["u","w"]), ("B":["t"])] 因为“C”的值在列表中有三项,“A”有两项,“B”有一项。我的想法大致如下: sorted(d.items(),key=operator.methodcaller(len(),tuple[1]),reverse=True)

假设我有以下词典:

{"A":["u","w"],"B":["t"],"C":["x","y","z"]}
如何按每个值的列表中的字符串数对字典进行排序,以便它返回:

[("C",["x","y","z"]), ("A",["u","w"]), ("B":["t"])]
因为“C”的值在列表中有三项,“A”有两项,“B”有一项。我的想法大致如下:

sorted(d.items(),key=operator.methodcaller(len(),tuple[1]),reverse=True)

但两者似乎都不起作用。对于排序还是很陌生的,所以谢谢你的帮助

你差点就成功了

>>> d = {"A":["u","w"],"B":["t"],"C":["x","y","z"]}
>>> sorted(d.items(), key=lambda x: len(x[1]), reverse=True)
[('C', ['x', 'y', 'z']), ('A', ['u', 'w']), ('B', ['t'])]
>>> sorted(d, key=lambda x: len(d[x]), reverse=True)
['C', 'A', 'B']
或者,也可以获取值:

>>> sorted(d.items(), key=lambda x: len(x[1]), reverse=True)
[('C', ['x', 'y', 'z']), ('A', ['u', 'w']), ('B', ['t'])]

使用
lambda

sorted(d.items(), key=lambda x: len(x[1]), reverse=True)

太快了!谢谢jamylak,将您的响应标记为11分钟后的答案。
operator.methodcaller
将字符串作为第一个参数,要调用的方法,
tuple[1]
在调用时不存在。另外,
是一个函数,而不是元组。
sorted(d.items(), key=lambda x: len(x[1]), reverse=True)