2013-05-23 5 views
0

Я пытаюсь эффективно построить словарь python из значений ключей другого словаря.Создать словарь python из значения другого словаря?

Например ...

dict1 = {'foo': [1, 3, 7], 'bar': [2, 4, 8]} ## note: all values in {key: value} will be unique 
    ## Algorithm here... 
    dict2 = {1: [3, 7], 3: [1, 7], 7: [1, 3], 2: [4, 8], 4: [2, 8], 8: [2, 4]} 

я могу получить этот результат через полный перебор, но эти словари для графов с более чем 100 000 узлов, поэтому мне нужно, чтобы это было эффективно.

Любая помощь была бы принята с благодарностью.

+1

Вы должны разместить свой код. – enginefree

+0

Извините, мой код был 3 вложенным для циклов, я не хотел его улучшать. Мне нужен совершенно новый подход. – Ogen

ответ

6

Вот как бы я это сделать:

dict2 = {k: x[:i] + x[i+1:] for x in dict1.values() for i, k in enumerate(x)} 

Если вы на Python 2.x вы можете использовать dict1.itervalues().

+0

Спасибо, это работает как шарм! – Ogen

Смежные вопросы