Roe*_*ler 16 python dictionary
我收到一个字典作为输入,并希望返回字典值在该字典范围内唯一的键列表.
我将以一个例子来澄清.说我的输入是字典a,构造如下:
a = dict()
a['cat'] = 1
a['fish'] = 1
a['dog'] = 2 # <-- unique
a['bat'] = 3
a['aardvark'] = 3
a['snake'] = 4 # <-- unique
a['wallaby'] = 5
a['badger'] = 5
Run Code Online (Sandbox Code Playgroud)
我期望的结果是['dog', 'snake'].
有明显的蛮力方法来实现这一点,但我想知道是否有一种巧妙的Python方式来完成工作.
Anu*_*yal 14
我认为如果dict太大会有效的方式
countMap = {}
for v in a.itervalues():
countMap[v] = countMap.get(v,0) + 1
uni = [ k for k, v in a.iteritems() if countMap[v] == 1]
Run Code Online (Sandbox Code Playgroud)
请注意,这实际上是一个暴力:
l = a.values()
b = [x for x in a if l.count(a[x]) == 1]
Run Code Online (Sandbox Code Playgroud)
这是一个只需要遍历一次dict的解决方案:
def unique_values(d):
seen = {} # dict (value, key)
result = set() # keys with unique values
for k,v in d.iteritems():
if v in seen:
result.discard(seen[v])
else:
seen[v] = k
result.add(k)
return list(result)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12560 次 |
| 最近记录: |