2013-03-24 3 views
0

Например, у меня есть словарь DictКак создать пары образуют питон ключей словаря

my_dictionary= {'a': 20, 'c': 60, 'b': 10} 

В этом случае у меня есть 3 ключа из словаря. Я хотел бы создавать пары и хранить их как кортежи в списке. Для вышеуказанного случая у меня было бы это

[(a,b),(a,c),(b,c)] 

Примечание: повторений нет.

Что было бы лучшим способом обойти это без каких-либо внешних модулей.

Спасибо за вклад.

+1

Вы пробовали делать это с двумя петлями? –

+2

не называйте ваш словарь 'dict', так как это встроенное имя – jamylak

+0

Спасибо @jamylak за это. Я исправил это. –

ответ

2
>>> dd = {'a': 20, 'c': 60, 'b': 10} 
>>> keys = [i for i in dd] 
>>> [(keys[i],keys[j]) for i in range(len(keys)) for j in range(i+1,len(keys))] 
[('a', 'c'), ('a', 'b'), ('c', 'b')] 
>>> 

и, как правило, это не очень хорошая идея, чтобы назвать ваши переменные, используя зарезервированные слова (например, dict)

+2

'[i for i in dd]' просто 'list (dd) '. И вы можете избежать проверки 'i! = J', используя вместо этого' i + 1'. – DSM

+0

@ DSM спасибо за исправление! – lenik

6
>>> from itertools import combinations 
>>> d = {'a': 20, 'c': 60, 'b': 10} 
>>> list(combinations(d, r=2)) 
[('a', 'c'), ('a', 'b'), ('c', 'b')] 
+1

Как я могу обойти это без использования библиотеки itertools –

+1

@nairobicoder Почему? Это часть стандартной библиотеки – jamylak

+4

@jamylak, скорее всего, потому что это домашнее задание =) – lenik