一个班轮:从列表中创建一个字典,索引为键
Posted
技术标签:
【中文标题】一个班轮:从列表中创建一个字典,索引为键【英文标题】:One liner: creating a dictionary from list with indices as keys 【发布时间】:2013-05-12 13:01:38 【问题描述】:我想从给定的列表中创建一个字典,只需一行。字典的键是索引,值是列表的元素。像这样的:
a = [51,27,13,56] #given list
d = one-line-statement #one line statement to create dictionary
print(d)
输出:
0:51, 1:27, 2:13, 3:56
我对为什么要 one 行没有任何具体要求。我只是在探索python,想知道这是否可能。
【问题讨论】:
您认为拥有这本词典会给您带来什么好处?使用字典不会更快地进行索引查找。 @MartijnPieters:嗯,我可能需要,例如:[x[0]:51, x[1]:27, x[2]:13, x[3]:56
。
那么就使用zip()
:dict(zip(x, a))
。
【参考方案1】:
a = [51,27,13,56]
b = dict(enumerate(a))
print(b)
会产生
0: 51, 1: 27, 2: 13, 3: 56
enumerate(sequence, start=0)
返回一个枚举对象。 sequence 必须是一个序列、一个 iterator 或其他支持迭代的对象。由
enumerate()
返回的迭代器的next()
方法返回一个tuple
,其中包含一个计数(来自默认为0 的start)和通过迭代sequence获得的值>:
【讨论】:
@jamylak 但不需要删除你的。人们本可以了解count()
...【参考方案2】:
使用另一个构造函数,你有
a = [51,27,13,56] #given list
d=i:x for i,x in enumerate(a)
print(d)
【讨论】:
@StefanoSanfilippo Dict 和集合推导被向后移植到 Python 2.7。 我的立场是正确的。不过,请记住,这不适用于以前的 Python 2 版本。【参考方案3】:x:a[x] for x in range(len(a))
【讨论】:
【参考方案4】:尝试enumerate
:它将返回一个元组列表(或迭代器)(i, a[i])
,您可以从中构建一个dict
:
a = [51,27,13,56]
b = dict(enumerate(a))
print b
【讨论】:
【参考方案5】:只需使用列表推导。
a = [51,27,13,56]
b = dict( [ (i,a[i]) for i in range(len(a)) ] )
print b
【讨论】:
以上是关于一个班轮:从列表中创建一个字典,索引为键的主要内容,如果未能解决你的问题,请参考以下文章