對於len> 1的字典值中的每個項目,我都在使用len == 1搜索另一個字典值中的項目。我在len == 1的另一個字典值中找到該項目,我想從較長的值中刪除它。例如:查找字典值中的項目,在長度爲1的另一個字典值中查找
d = {
'key1' : ['one', 'two', 'three'],
'key2' : ['one'],
'key3' : ['two', 'three'],
}
應該返回
{
'key1' : ['two', 'three'],
'key2' : ['one'],
'key3' : ['two', 'three'],
}
我當前的代碼爲這個
allvals = match.values()
for k, v in match.iteritems():
dontuse = []
newval = []
for i in v:
for x in allvals:
if x == v:
pass
elif i in x:
if len(x) == 1:
dontuse.append(i)
for i in v:
if i in dontuse:
pass
else:
newval.append(i)
match[k] = list(set(newval))
然而,這是一個極端的瓶頸與處理時間。任何幫助將不勝感激,謝謝!
您的解決方案是否正常工作? – wwii
我的解決方案可行,使用大型詞典(潛在100,000多個鍵)時,速度非常慢。 – Dylan
在你的輸出中,'dict [key2]'是'['one']還是'[]'? – Will