У меня следующая проблема: я создаю словарь, в котором ключи являются идентификаторами (от 0 до N), а значения представляют собой список из одного или нескольких чисел.
D = dict()
D[0] = [1]
D[1] = [2]
D[2] = [0]
ИЛИ:
D = dict()
D[0] = [1, 2]
D[1] = [1, 2]
D[2] = [0]
Если список, хранящийся в словаре, имеет более одного значения, это всегда означает, что этот список присутствует под двумя разными ключами.Теперь я хочу преобразовать оба dict в следующее:
D = dict()
D[0] = 1
D[1] = 2
D[2] = 0
Для первого, это просто, функция просто заменит значения dict на первое значение в списке:
def transform_dict(D):
for key, value in D.items():
D[key] = value[0]
return D
Однако во втором случае функция должна назначить одну клавишу с одним значением, а другую - другим.Например, клавише «0» может быть присвоено значение «1» или «2»;и клавиша «1» будет назначена другой.
Я борюсь с этой простой проблемой, и я не вижу способа сделать это эффективно.Есть ли у вас какие-либо идеи?
РЕДАКТИРОВАТЬ: Объяснение n ° 2
Исходный dict может иметь следующий формат:
D[key1] = [val1]
D[key2] = [val2]
D[key3] = [val3, val4]
D[key4] = [val3, val4]
Если aсписок значений состоит из более чем одного элемента, это означает, что в словаре существует второй ключ с таким же списком значений (key3 и key4).
Цель состоит в том, чтобы преобразовать этот dict в:
D[key1] = val1
D[key2] = val2
D[key3] = val3
D[key4] = val4
Где val3 и val4 каким-либо образом связаны с key3 и key4 (мне все равно, какой из них подходит к какому ключу).
EDIT2: Примеры:
# Input dict
D[0] = [7]
D[1] = [5]
D[2] = [4]
D[3] = [1, 2, 3]
D[4] = [6, 8]
D[5] = [1, 2, 3]
D[6] = [1, 2, 3]
D[7] = [6, 8]
#Output
D[0] = 7
D[1] = 5
D[2] = 4
D[3] = 1
D[4] = 6
D[5] = 2
D[6] = 3
D[7] = 8