K. *_* C 3 python dictionary duplicates
一个字典
dic = {
1: 'a',
2: 'a',
3: 'b',
4: 'a',
5: 'c',
6: 'd',
7: 'd',
8: 'a',
9: 'a'}
Run Code Online (Sandbox Code Playgroud)
我想删除重复值只保留一个K/V对,关于这些重复值的"关键"选择,可以是max或min,也可以通过随机选择其中一个重复项的键.
我不想使用ak/v交换,因为它无法控制密钥选择.
以值"a"为例
1: 'a',
2: 'a',
4: 'a',
8: 'a',
9: 'a'
Run Code Online (Sandbox Code Playgroud)
最大键为{9:'a'},最小值为{1:'a'},随机将选择其中任何一个.
并且,如果键是其他类型的哈希值,例如字符串,那么如何做这样的选择呢?
谁能和我分享一个想法?
谢谢!
您可以构建一个反向字典,其中的值是初始字典中所有键的列表.使用它你可以做你想要的,最小,最大,随机,交替最小和最大,或其他什么.
from collections import defaultdict
d = defaultdict(list)
for k,v in dic.iteritems():
d[v].append(k)
print d
# {'a': [1, 2, 4, 8, 9], 'c': [5], 'b': [3], 'd': [6, 7]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8623 次 |
| 最近记录: |