Python, разрешающий словарь

#python #list #dictionary

#python #Список #словарь

Вопрос:

Я работаю над примером и застрял в создании функции. Целью программы является разрешение словаря в соответствии со списком. У меня есть список ‘my_list’, который содержит ключи словаря ‘my_diction’. Я хочу разрешить словарь таким образом (ожидаемый вывод);

 [5, 6, 7, 8]
[50, 60, 70, 80]
['K', 'L', 'M', 'N']
['X', 'Y']
['Z']
 

Код:

 my_list = [5, 6, 7, 8]
my_diction = {5: (50, 'K', 'X'), 6: (60, 'L'), 7: (70, 'M', 'Y', 'Z'), 8: (80, 'N')}

def resolve_func(b_dict):
#
# `Resolving has to be done in here`
#
    return    

print('Resolved:')
for my_list in resolve_func(my_diction):
    print(my_list)
 

Комментарии:

1. Что означает «разрешение словаря»?

Ответ №1:

Это должно сделать это:

 my_diction = {5: (50, 'K', 'X'), 6: (60, 'L'), 7: (70, 'M', 'Y', 'Z'), 8: (80, 'N')}

    
def resolve_func(b_dict):
    keys=[]
    values=[]
    for k, tup in b_dict.items(): # iterate over the dictionary. "k" is the key, "tup" are the tuples
        keys.append(k)
        for i, v in enumerate(tup): # iterate over the values "v" in the tuple. With "enumerate" we also get the integer position of the value "i"
            if len(values) <= i: 
                values.append([]) #if sublist doesn't exist yet, create it
            values[i].append(v) #add values to sublist
    return [keys] values #add the "keys" list to the front of the list of lists

for my_list in resolve_func(my_diction):
    print(my_list)
 

Ответ №2:

 my_list = [5, 6, 7, 8]
my_diction = {5: (50, 'K', 'X'), 6: (60, 'L'), 7: (70, 'M', 'Y', 'Z'), 8: (80, 'N')}

def resolve_func(b_dict):
    final_list = []
    for i,j in enumerate(my_list):
        for i1,j1 in enumerate(my_diction[j]):
            a = []
            print("my_dict")
            print(i1,j1)
            if len(final_list)<=i1:
                a.append(j1)
                final_list.append(a)
            else:
                a = final_list[i1]
                a.append(j1)
                final_list[i1]=a
                

    return final_list

print('Resolved:')
for my_list in resolve_func(my_diction):
    print(my_list)
 

Вывод:

введите описание изображения здесь