现在,我想将一个数组转换成如下的字典格式:
如何在Python中优雅地解决这个问题?
dict = {'item0': arr[0], 'item1': arr[1], 'item2': arr[2]...}
如何在Python中优雅地解决这个问题?
dict = {'item0': arr[0], 'item1': arr[1], 'item2': arr[2]...}
您可以使用enumerate
和字典推导式:
>>> arr = ["aa", "bb", "cc"]
>>> {'item{}'.format(i): x for i,x in enumerate(arr)}
{'item2': 'cc', 'item0': 'aa', 'item1': 'bb'}
dict(('item{0}'.format(i), x) for i, x in enumerate(arr))
。 - mgilsonint
s:
我们可以使用字典推导式。
>>> l = [3, 2, 4, 5, 7, 9, 0, 9]
>>> d = {"item" + str(k): l[k] for k in range(len(l))}
>>> d
{'item5': 9, 'item4': 7, 'item7': 9, 'item6': 0, 'item1': 2, 'item0': 3, 'item3': 5, 'item2': 4}
d = {"item%s" % index: value for (index, value) in enumerate(arr)}
simpleArray = [ 2, 54, 32 ]
simpleDict = dict()
for index,item in enumerate(simpleArray):
simpleDict["item{0}".format(index)] = item
print(simpleDict)
好的,第一行是输入,第二行是一个空字典。我们将在运行时填充它。
现在我们需要迭代,但正常的迭代方式在Python中被认为是不符合Python风格的。使用enumerate可以同时获得数组的索引和需要的项。看这里:Python 'for'循环中访问索引。
因此,在每次迭代中,我们将从数组中获取一个项,并使用括号中的字符串作为键插入字典中。我使用format,因为使用%已经不推荐了。看这里:Python字符串格式化:% vs. .format。
最后,我们将打印结果。使用print作为函数可以提高兼容性。
>>> x = [1,2,3]
>>> {'item'+str(i):v for i, v in enumerate(x)}
>>> {'item2': 3, 'item0': 1, 'item1': 2}
dict()
来构建你的字典。d = dict(('item{}'.format(i), arr[i]) for i in xrange(len(arr)))
使用map
,这可以这样解决:
a = [1, 2, 3]
d = list(map(lambda x: {f"item{x[0]}":x[1]}, enumerate(a)))
结果是:
[{'item0': 1}, {'item1': 2}, {'item2': 3}]