从python列表中获取一个字典

Ale*_*xio 3 python dictionary list python-2.7

我有一个列表my_list = ['a', 'b', 'c', 'd'],我需要创建一个看起来像的字典

{ 'a': ['a', 'b', 'c', 'd'], 
  'b': ['b', 'a', 'c', 'd'], 
  'c': ['c', 'a', 'b', 'd'], 
  'd': ['d', 'a', 'b', 'c'] }
Run Code Online (Sandbox Code Playgroud)

每个元素作为其值是列表,但第一个元素本身.

这是我的代码

my_list = ['1', '2', '3', '4']
my_dict=dict()

for x in my_list:        
    n = my_lst[:]
    n.remove(x)
    n= [x] + n[:]
    my_dict[x] = n

print my_dict
Run Code Online (Sandbox Code Playgroud)

这使

{'1': ['1', '2', '3', '4'], 
 '3': ['3', '1', '2', '4'], 
 '2': ['2', '1', '3', '4'], 
 '4': ['4', '1', '2', '3']}
Run Code Online (Sandbox Code Playgroud)

按要求.但我认为这不是最佳的做法.任何优化的帮助将不胜感激.

Mat*_*son 7

>>> seq
    ['a', 'b', 'c', 'd']

>>> {e: [e]+[i for i in seq if i != e] for e in seq}
    {'a': ['a', 'b', 'c', 'd'],
     'b': ['b', 'a', 'c', 'd'],
     'c': ['c', 'a', 'b', 'd'],
     'd': ['d', 'a', 'b', 'c']}
Run Code Online (Sandbox Code Playgroud)