Вопрос 1 ) Я хочу создать словарь, он состоит из 8 ключей, некоторые ключи имеют 2 значения, а некоторые ключи имеют 3 значения. как создать такой словарь в python.
Я пытался использовать вложенные циклы, но моя логика не сработала.
Желаемый результат
dict_a = { 1:[0,1], 2:[2,3], 3:[4,5], 4:[6,7], 5:[8,9], 6:[10,11], 7:[12,13,14], 8:[15,16,17] }
Вопрос 2 ) Если мы успешно создадим dict_a
, то во второй части я хочу объединить несколько значений dict_a в соответствии с dict_b, показанным ниже.
Например :- В dict_b = { 1:[1,2], 2:[2,3]......}
, здесь 1:[1,2]
означает, что я хочу объединить 1-е и 2-е «значения» словаря dict_a, что даст мне [0, 1, 2, 3]
. аналогично 2:[2,3]
подарит [2,3,4,5]
dict_b = { 1:[1,2], 2:[2,3], 3:[3,4], 4:[4,5], 5:[5,6], 6:[6,7], 7:[7,8] }
На самом деле я успешно попробовал вышеуказанный метод, но для двух ключей 7th
и 8th
в dict_a
я хочу объединить только первые два значения, т.е. когда dict_b
переходит к 7-му ключу 7:[7,8]
, я хочу, чтобы результат был [12,13,15,16]
, а не [12,13,14,15,16,17].
но метод, который я использовал ниже, неизбежно объединит все.
dict_a = { 1:[0,1], 2:[2,3], 3:[4,5], 4:[6,7], 5:[8,9], 6:[10,11], 7:[12,13,14], 8:[15,16,17] }
dict_b = { 1:[1,2], 2:[2,3], 3:[3,4], 4:[4,5], 5:[5,6], 6:[6,7], 7:[7,8] }
a_list = []
for i in dict_b:
tem = []
a_list.append(tem)
for j in dict_b[i]:
tem.extend(dict_a[j])
print(tem)
Желаемый результат-
[0, 1, 2, 3]
[2, 3, 4, 5]
[4, 5, 6, 7]
[6, 7, 8, 9]
[8, 9, 10, 11]
[10, 11, 12, 13]
[12, 13, 15, 16]
Ключи в словаре должны быть типа, который реализует __hash__
, например. хешируемый. Если вам нужны ключи с 2 или 3 значениями, используйте кортеж из 2 или 3, они хешируются, например. d=dict(); d[(1,2)]=1
должно работать нормально.
Если вы хотите объединить только первые два значения, используйте срез.
Сдача
tem.extend(dict_a[j])
к
tem.extend(dict_a[j][:2])
Что касается создания словаря с разным количеством значений, в python нет ограничений. Опубликуйте свой код для создания этого словаря, так как ошибка, вероятно, связана с вашими вложенными циклами.