2012-03-31 42 views
1

我有一本词典,我希望按字母顺序对具有相同值的键进行排序。按字母顺序排列具有相同值的键

例如:{薛宝钗:1,苹果:1,DOM香蕉:1}

如何这些键按字母顺序排序?

谢谢。

+0

考虑['sorted'](http://docs.python.org/library/functions.html#sorted)或['itertools'](http://docs.python.org /library/itertools.html)为你的[字典排序](http://en.wikipedia.org/wiki/Lexicographical_order),一旦你确定它们属于同一个重复组。 – MrGomez 2012-03-31 05:28:05

回答

4
>>> from collections import defaultdict 
>>> items = {'chai':1, 'apple':1, 'dom banana':1} 
>>> d = defaultdict(list) 
>>> for k,v in items.iteritems(): 
     d[v].append(k) 
>>> {k:sorted(v) for k,v in d.iteritems()} 
{1: ['apple', 'chai', 'dom banana']} 
+0

感谢您的代码,但我有一个很大的关键范围,我想输出最大值的前10个键,但我有多个相同值的键。如何显示已排序的键以及其他键本身(唯一值)还是已排序(与其他键共享相同的值)。 – 2012-03-31 06:48:00

+0

你应该问一个单独的问题:D – jamylak 2012-03-31 06:53:58

+0

或者从来没有想过,只是把它添加到这个问题我猜 – jamylak 2012-03-31 07:05:46

0
sorted(k for k,v in D.iteritems() if v == 1) 
+0

这将适用于该示例,但他也可能想要对不同的键进行排序。 – jamylak 2012-03-31 06:13:58

+0

@jamylak,那么他可以添加一个变量或写一个函数。这是一个*示例*,并且该问题未指定输出的格式。 – 2012-03-31 16:35:24