根据列表在lis中的位置将列表转换为python字典

2024-04-24 19:14:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个清单:

c = ['A','B','C']

我希望它能把它转换成dict对象

^{pr2}$

我目前已经实现了以下代码:

c = ["A","B","C"]
d={}
for i in range(len(c)):
    d.update({"alphabets":{str(i): c[i]}})
print d

但这会得到输出{'alphabets': {'2': 'C'}}。有人知道如何处理这个错误吗?在


Tags: 对象代码inforlen错误updaterange
3条回答

那是因为你正在更新字典。在

警告:

我用过普通字典。如果你愿意的话,你可以用有序字典。在

代码:

c = ["A","B","C"]
d={"alphabets":{}}
for i,v in enumerate(c):
    d["alphabets"][str(i)]=v
print d

输出:

^{pr2}$

注意事项:

  • 程序中的问题是您总是将键alphabets更新到新字典中。在
  • 这就是为什么你得到了c:2,因为这是最后一个更新的字典 -我所做的就是创建一个键为alphabets的字典

您也可以使用zip,尽管它不维护顺序。在

>>>{'alphabets':{k:v for k,v in zip(range(len(c)),c)}}
>>>{'alphabets': {0: 'A', 1: 'B', 2: 'C'}}

您可以使用dict comprehension

In [196]: {'alphabets': {str(i):v for i, v in enumerate(c)}}
Out[196]: {'alphabets': {'0': 'A', '1': 'B', '2': 'C'}}

如果您需要订单,可以使用^{}来自^{}

^{pr2}$

或者是@cezar建议的onliner:

d = {'alphabets': OrderedDict([(str(i), v) for i, v in enumerate(c)])}

相关问题 更多 >