Python - 按字母(值)排序字典{String Key:字符串列表}?

时间:2013-04-18 07:45:18

标签: 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)

或者

sorted(d.items(),key=(string, stringList):(len(stringList),string),reverse=True)

但两者似乎都不起作用。排序还是很新的,谢谢你的帮助!

3 个答案:

答案 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)