3

假设我有以下字典:

{"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)

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

4

3 回答 3

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'])]
于 2013-04-18T07:46:33.423 回答
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'])]
于 2013-04-18T07:47:28.630 回答
0

使用lambda

sorted(d.items(), key=lambda x: len(x[1]), reverse=True)
于 2013-04-18T07:49:59.590 回答