#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)
Вывод: