如何从包含python中的字符串列表的列表创建2个字典

时间:2014-12-04 05:40:58

标签: python

如果你有一个列表,如下面的mylist

mylist = [['start', 'a', 'next'],['next','b','end'],['previous','c','start']]

如何创建一个字典,其中键等于list [0] [0]和value = list

例如字典将是:

{'start': ('a', 'next'), 'next': ('b', 'end'), 'previous': ('c', 'start')}

我正在尝试创建一个转换函数来遍历保存转换的列表列表。

NEW

我现在正在尝试进行列表理解,但是我继续使用此代码获取“IndexError:string index out of range”

d = {x[0]: (x[1],x[2]) for x in self.epsilon}
print(d)

我的列表存储在self.epsilon中,它等于:     self.epsilon = [['q1','0','q1'],['q1','1','q2'],['q2','0','q2'],['q2 ','1','q1']]

4 个答案:

答案 0 :(得分:2)

最简单的方法是进行字典理解:

{x[0]: tuple(x[1:]) for x in mylist}

这要求mylist中的每个元素都是一个数组,至少有一个索引为0的元素用作键,并从每个嵌套数组中的其余元素创建一个元组,用作相关键的值

答案 1 :(得分:0)

mylist = [['start', 'a', 'next'],['next','b','end'],['previous','c','start']]
dic={}
for i in mylist:
    dic[i[0]]=i[1:]
print dic

如果您不希望使用list,而tuple作为dict的使用值

mylist = [['start', 'a', 'next'],['next','b','end'],['previous','c','start']]
dic={}
for i in mylist:
    dic[i[0]]=tuple(i[1:])
print dic

答案 2 :(得分:0)

在python 3和2.7中:

a_list = [['start', 'a', 'next'],['next','b','end'],['previous','c','start']]


a_dict = {l[0]: (l[1], l[2]) for l in a_list}

print(a_dict)
# {'start': ('a', 'next'), 'previous': ('c', 'start'), 'next': ('b', 'end')}

替代方式:

a_dict = dict([[lst[0], (l[1], l[2])] for l in a_list]) 
# {'start': ('a', 'next'), 'previous': ('c', 'start'), 'next': ('b', 'end')}

答案 3 :(得分:0)

  

mylist = [['start','a','next'],['next','b','end'],['previous','c','start']]

最简单的方法是字典理解

  

d = {i [0] :( i [1],i [2])for i in mylist}

你得到d作为所需的输出

  

{'start':('a','next'),'next':('b','end'),'previous':('c','start')}

最短时间复杂度时间:6μs