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)