【发布时间】:2022-01-02 02:03:44
【问题描述】:
我有一个 Python 列表,我想将其转换为字典。名单是:
l = [('1:', [362.5815, 162.5823]), ('2:', [154.1328, 354.133]), ('3:', [168.9325, 368.9331]), ('4:', [9.9201, 209.9206]), ('5:', [106.4842, 306.4844])]
dict 应该将整数 1,2,3,4,5 作为键,将列表作为值。我试过使用
def Convert(l):
it = iter(l)
res_dct = dict(zip(it, it))
return res_dct
和
def Convert(l):
res_dct = {l[i]: l[i + 1] for i in range(0, len(l), 2)}
return res_dct
但由于列表是不可散列的类型,因此这些不起作用。 我还能如何转换此列表?提前致谢
【问题讨论】:
-
你的第二个例子几乎是正确的。但是您不希望
l[i]作为键,因为那是一个元组。相反,您希望将元组的第一个元素l[i][0]作为键。 -
@Code-Apprentice - 我不这么认为。即使海报是
l[i][0],它也是带有冒号的字符串,而不是整数,它会跳过所有其他列表项。 -
@tdelaney 是的,将
l[i]更改为l[i][0]和l[i + 1]更改为l[i][1]只是解决问题的第一步。此更改将解决列表不可散列的直接错误。我的观点是 OP 正朝着正确的方向前进。 -
@Code-Apprentice - 但它不是正确的方向。当一个简单的迭代可以完成这项工作时,不应该使用范围 + 索引。第一个例子比第二个更靠近右边。
-
@tdelaney
range()不是 pythonic 并不意味着使用它根本不起作用。
标签: python list dictionary type-conversion