【问题标题】:converting list into dictionary with index as key [duplicate]将列表转换为以索引为键的字典[重复]
【发布时间】:2018-10-29 21:09:36
【问题描述】:

list 转换为dictionary,其中键作为元素的索引,值作为列表中的值。我试图创建它,但遇到了错误。下面是我当前的代码

for each in list:
    dict[each] = list[each]

我的代码有什么问题。我是python的初学者。

【问题讨论】:

  • 您尚未将dict 定义为字典对象。此外,您还将列表的 each 值分配为字典的键和值。
  • 欢迎来到 SO,您实际上是在列表上应用 for 循环而不使用索引方法,您使用的是直接方法 - 简单地迭代您的元素,each 的值基本上是元素值不是索引值,如果你想使用索引方法试试这个 - for i in range(0,len(list): dict[i] = list[i]。这将工作
  • 市场不再重复的问题是什么?浪费时间回答 SMH
  • @AaronBrandhagen 这就是我们不删除重复问题的原因。标记为重复的问题会留下来作为指导帖子。但我们不希望 answers 碎片化。我们希望所有答案都在同一个地方,因为这样可以更容易地找到它们并对其进行投票和评论。现有的答案已经被投票,最好的已经上升到顶部。如果您开始重新发布相同的答案,而不是作为骗子关闭问题,那么所有投票和评论都必须再次发生
  • @AaronBrandhagen 我已经记不清有多少次 n00b (重新)发布了垃圾答案(想想eval 或类似的),我不得不解释为什么这是不好的亚达亚达。每次有人决定重新发布我过去评论过的答案时,我都不想重复自己。这是在浪费每个人的时间。如果每个答案都只存在一次,并且它们都存在于同一个问题上,我们都会过得更好。

标签: python


【解决方案1】:

以下代码将起作用

lst = [1,2,3,4]
result = {i:j for i,j in enumerate(lst)}

【讨论】:

  • 你能帮我理解我的代码有什么问题吗
  • 看我的回答,它解释了什么是错的。
【解决方案2】:
dict = {}
for each in list:
    dict[each] = list[each]

以数组list = [1,2,34,22]为例

dict[1] = list[1]  # list[1] = 2
dict[2] = list[2]  # list[2] = 34
dict[34] = list[34]  # Error size is just 4 , accessing list[34] will give index error

试试这个简单的代码

a = [1,2,34,22]

dict = {}
for i in  range(len(a)):
  dict[i]=a[i]
print(dict)

【讨论】:

    【解决方案3】:

    尝试使用枚举!这很漂亮:

    list = ['a','b','c']
    
    print(dict(enumerate(list))) # >>> {0: 'a', 1: 'b', 2: 'c'}
    

    您的代码有什么问题是您正在获取列表的两个元素(通过使用 list[value] 语法为它们下标)并将它们设置为彼此相等。

    你打算做什么:

       d = {}
        l = ['a','b','c']
        for k,v in enumerate(l):
            d[k] = v
    

    这是做什么的:

    枚举一个序列会给你一个元组,其中一个整数与序列的值配对。就像我上面的列表一样, enumerate(list) 本身就是:

    for k in enumerate([1,2,3]):
    print(k)
    

    结果:(0, 1) (1, 2) (2, 3)

    循环中的 k 和 v first for 我写的循环解包元组(k = 元组的索引 0,v = 第二个),预定义的 dict(在我的例子中是 d)设置枚举值(d [k], key) 到值 k(枚举后元组的第二个值)

    希望这是有道理的!

    【讨论】:

    • 精彩的答案:)
    • 谢谢!刚刚添加了信息,因为我看到你想知道为什么你的不工作:) 编辑:以为你是 OP :S 大声笑对不起。
    猜你喜欢
    • 2014-12-09
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 2016-07-27
    • 1970-01-01
    • 2011-10-17
    相关资源
    最近更新 更多