假设我有以下字典:
{"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)
或者
sorted(d.items(),key=(string, stringList):(len(stringList),string),reverse=True)
但两者似乎都不起作用。排序还是很新的,谢谢你的帮助!
答案 0 :(得分:2)
>>> 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'])]
答案 1 :(得分:0)
你几乎拥有它。
>>> 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'])]
答案 2 :(得分:0)
使用lambda
:
sorted(d.items(), key=lambda x: len(x[1]), reverse=True)