一个班轮:从列表创建一个字典,索引作为键

Naw*_*waz 87 python dictionary list python-3.x

我想在一行中创建给定列表中的字典.字典的键将是索引,值将是列表的元素.像这样的东西:

a = [51,27,13,56]         #given list

d = one-line-statement    #one line statement to create dictionary

print(d)
Run Code Online (Sandbox Code Playgroud)

输出:

{0:51, 1:27, 2:13, 3:56}
Run Code Online (Sandbox Code Playgroud)

我没有任何具体的要求,为什么我要一个线.我只是在探索python,并想知道这是否可行.

glg*_*lgl 147

a = [51,27,13,56]
b = dict(enumerate(a))
print(b)
Run Code Online (Sandbox Code Playgroud)

会产生

{0: 51, 1: 27, 2: 13, 3: 56}
Run Code Online (Sandbox Code Playgroud)

enumerate(sequence, start=0)

返回一个枚举对象.sequence必须是序列,迭代器或其他支持迭代的对象.next()返回的迭代器的方法enumerate()返回一个tuple包含一个count(从start开始,默认为0)和迭代序列获得的值:

  • @jamylak但不需要删除你的.人们可以学习`count()`...... (2认同)

kir*_*off 36

使用另一个构造函数

a = [51,27,13,56]         #given list
d={i:x for i,x in enumerate(a)}
print(d)
Run Code Online (Sandbox Code Playgroud)

  • @StefanoSanfilippo Dict和集合理解被反向移植到Python 2.7. (7认同)
  • 请注意,此语法在Python 2中不起作用 (3认同)

Ste*_*ppo 14

尝试enumerate:它将返回元组的列表(或迭代器)(i, a[i]),您可以从中构建dict:

a = [51,27,13,56]  
b = dict(enumerate(a))
print b
Run Code Online (Sandbox Code Playgroud)


Emi*_*har 11

{x:a[x] for x in range(len(a))}
Run Code Online (Sandbox Code Playgroud)