我有一个这样的清单:
c = ['A','B','C']
我希望它将其转换为dict
对象,如
d = {"alphabets":{"0":"A","1":"B","2":"C"}}
我目前已实现以下代码:
c = ["A","B","C"]
d={}
for i in range(len(c)):
d.update({"alphabets":{str(i): c[i]}})
print d
但这会给出输出{'alphabets': {'2': 'C'}}
。有人知道如何处理这个错误吗?
答案 0 :(得分:5)
那是因为你正在更新字典。
警告:
我使用过普通字典。如果你愿意的话,你可以使用有序词典。
<强>代码:强>
c = ["A","B","C"]
d={"alphabets":{}}
for i,v in enumerate(c):
d["alphabets"][str(i)]=v
print d
<强>输出:强>
{'alphabets': {'1': 'B', '0': 'A', '2': 'C'}}
备注:强>
alphabets
更新为新字典。c:2
,因为那是最后一次更新的字典
- 我做了什么是创建了一个带有键alphabets
答案 1 :(得分:3)
您可以使用dict comprehension
执行此操作:
In [196]: {'alphabets': {str(i):v for i, v in enumerate(c)}}
Out[196]: {'alphabets': {'0': 'A', '1': 'B', '2': 'C'}}
如果您需要订单,可以使用OrderedDict
collections
from collections import OrderedDict
l1 = [(str(i),v) for i, v in enumerate(c)]
d2 = OrderedDict(l1)
In [284]: d2
Out[284]: OrderedDict([('0', 'A'), ('1', 'B'), ('2', 'C')])
d = {'alphabets': d2}
In [286]: d
Out[286]: {'alphabets': OrderedDict([('0', 'A'), ('1', 'B'), ('2', 'C')])}
或@cezar建议的在线资讯:
d = {'alphabets': OrderedDict([(str(i), v) for i, v in enumerate(c)])}
答案 2 :(得分:2)
您也可以使用zip
,但不能保持订单。
>>>{'alphabets':{k:v for k,v in zip(range(len(c)),c)}}
>>>{'alphabets': {0: 'A', 1: 'B', 2: 'C'}}