按键排序python字典

时间:2011-09-16 02:07:57

标签: python sorting

>>> the_values = [u'abc', u'kfc', u'listproperty', u'models', u'new', u'newer', u'note', u'order', u'tag', u'test', u'type']
>>> the_keys = [1, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1]
d2 = dict(zip(the_keys, the_values))
>>> d2
{1: u'type', 2: u'tag'}

你能告诉我为什么只选择“打字”和“标签”吗?

我正在尝试按the_values排序the_keys

我注意到切换the_valuesthe_keys的顺序有效:

>>> d2 = dict(zip(the_values, the_keys))
>>> d2
{u'abc': 1, u'models': 2, u'note': 1, u'tag': 2, u'kfc': 2, u'newer': 1, u'listproperty': 1, u'test': 1, u'new': 1, u'type': 1, u'order': 1}

感谢。

3 个答案:

答案 0 :(得分:3)

键必须是唯一的,因此使用1和2作为唯一键意味着您只能有两个与之关联的值。

当您创建字典时,您将设置键以对应于值。首先,1 - > abc,2 - >肯德基。但是,你不断重写关键,给他们不同的价值观。最后,只保留键的最新值(1 - > type,2>标记)。

答案 1 :(得分:3)

正如其他人所说,密钥必须是唯一的。为了解决这个问题,你不能使用字典。

>>> [x[1] for x in sorted(zip(the_keys, the_values), key=operator.itemgetter(0))]
[u'abc', u'listproperty', u'new', u'newer', u'note', u'order', u'test', u'type', u'kfc', u'models', u'tag']

答案 2 :(得分:2)

因为根据定义,字典具有唯一键。 (否则,当你查找键时,它将如何知道返回哪个值?)dict构造函数遍历键值对并将值分配给字典中的相应键,覆盖以前的值已存在的密钥。