超快速和肮脏的
d = {'happy':['sun', 'moon', 'chocolate'], 'sad':['fail', 'test', 'bills'], 'random': ['baloon', 'france', 'sun'] }
specific_word = 'bear' #uncomment to search for specific word
for key_a in d: #loop through the keys of d
for key_b in d: #loop a second time through the keys of d
if key_a == key_b: #if the keys are the same, skip it
break
for item in d[key_a]: #loop through items in d[key_a]
if (item in d[key_b]): #check if the item is in d[key_b]
#if you want to search ONLY for specific_word then this above if statement changes to this:
#if (item in d[key_b]) and item == specific_word:
print key_a,key_b #if u made it this far, print the keys
break # stop printing other stuff, in case of multiple matches
的定义形式:(你应该几乎总是试图做这样的)
def duplicate_dictionary_check(d,specific_word=''):
for key_a in d:
for key_b in d
if key_a == key_b:
break
for item in d[key_a]:
if (item in d[key_b]):
if specific_word:
if specific_word == item:
print key_a,key_b,"found specific word:", specific_word
print key_a,key_b,"found match:",item
那么你就可以玩这个像
d = {'happy':['sun', 'moon', 'chocolate'], 'sad':['fail', 'test', 'bills'], 'random': ['baloon', 'france', 'sun'] }
duplicate_dictionary_check(d)
# or
duplicate_dictionary_check(d,'sun')
你想要什么,输出是,如果两对不同的键分享不同的词(例如,如果在你的例子'也sad'包含'moon')? – JB333 2014-10-06 17:44:46
是的,即使2个或2个以上,不同的键共享至少1个公共值。然后,那些2(或更多)键应该被打印 – Andre 2014-10-06 17:46:31
当然,常用值可以大于1 ..但是至少为1.然后该函数应该打印那些共享公共值的键。 – Andre 2014-10-06 17:47:47