我想要一个字典中唯一的重复值。它看起来像这样:如何根据价值独特的字典?
d = {
"a":1,
"b":2,
"c":2,
"d":3,
"e":4,
"f":5,
"g":1,
"h":2,
"i":2,
"j":1,
"k":1}
这里是我做过什么:
# sort and unique the dict values
obj = d.values()
K = []
K = sorted(list(zip(*[(x,K.append(x)) for x in obj if not x in K])[0]
V=[]
for v1 in L:
V.append([k for k, v in obj.iteritems() if v == v1][0])
d_out = dict(zip(K, V))
1. 因此,将K,V是在正确的顺序? 此外,它可能有点复杂,任何人都可以通过它的值给一个简单的解决方案来独特的字典?
2. 下面可以更简单吗?
for v1 in L:
V.append([k for k, v in obj.iteritems() if v == v1][0])
这不是工作在我的测试:
[V.append([k for k, v in obj.iteritems() if v == v1][0]) for v1 in L]
3. 我意识到,我可以使用交换键值以实现(唯一一个由它的价值字典),但我没有知道如何选择关键时候掉造成本的关键冲突:
dict((value, key) for key, value in my_dict.iteritems())
我知道,如果交换一遍值将是唯一的,但,当关键冲突发生时,这只会覆盖密钥,没有机会做出选择。我感到困惑为什么这不会导致关键冲突错误?我可以做些什么来选择旁边的丑陋的方式键覆盖新的字典的关键?
4. 我搜索,找到一些“无”值蟒蛇字典很好的讨论,任何人都可以给我它是干什么用的样本,它会在使用python字典影响?
感谢jathanism,我想你的意思是我应该打勾在别人的答案,而不是增加了使用价值。 – 2010-07-16 02:55:45