прежде чем мы перейдем к решению, позвольте мне сказать вам кое-что. То, что у вас есть, это не вложенный словарь , а скорее наборы в словаре .
Некоторые термины Python, чтобы прояснить это:
Массив: [1, 2]
Массивы заключены в квадратные скобки и разделены запятыми.
Словарь: {"a": 1, "b": 2}
Словари заключены в фигурные скобки и разделены парами «ключ»: значение через запятую. Здесь «a» и «b» - это ключи, а 1 и 2 - их соответствующие значения.
Набор: {1, 2}
Наборы заключены в фигурные скобки и разделены запятыми.
dict = {'a': {'1', '2'}, 'b': {'5', '1'}, 'c': {'3', '2'}}
Здесь {'1', '2'} - это набор в словаре с ключом 'a' . Таким образом, то, что у вас есть, на самом деле установлено в словаре, а не во вложенном словаре.
Решение
Переходя к решению, множества не повторяются, то есть вы не можете просматривать их один за другим. Итак, вы должны превратить их в списки, а затем повторить их.
# Initialize the dictionary to be processed
data = {'a': {'1','2'}, 'b':{'5','1'}, 'c':{'3','2'}}
# Create dictionary to store solution
sol = {} # dictionary to store element as a key & sets containing that element as an array
# Eg., sol = { "1" : [ "a" , "b" ] }
# This shows that the value 1 is present in the sets contained in keys a & b.
# Record all elements & list every set containing those elements
for key in data. keys (): # iterate all keys in the dictionary
l = list ( data [ key ] ) # convert set to list
for elem in l: # iterate every element in the list
if elem in sol. keys (): # check if elem already exists in solution as a key
sol [ elem ]. append ( key ) # record that key contains elem
else:
sol [ elem ] = [ key ] # create a new list with elem as key & store that key contains elem
# At this time, sol would be
# {
# "1" : [ "a" , "b" ] ,
# "2" : [ "a" , "C" ] ,
# "3" : [ "c" ] ,
# "5" : [ "b" ]
# }
# Since, you want only the ones that are present in more than 1 sets, let's remove them
for key in sol : # iterate all keys in sol
if sol [ key ]. length < 2 : # Only keys in at least 2 sets will be retained
del sol [ key ] # remove the unrequired element
# Now, you have your required output in sol
print ( sol )
# Prints:
# {
# "1" : [ "a" , "b" ] ,
# "2" : [ "a" , "c" ]
# }
Надеюсь, это поможет вам ...