【问题标题】:Python: Create dictionary with list index number as key and list element as value?Python:创建以列表索引号为键、列表元素为值的字典?
【发布时间】:2017-11-21 04:09:36
【问题描述】:

我看到的所有问题都与我想做的完全相反:

假设我有一个清单:

lst = ['a','b','c']

我正在寻找一个字典,其中键是元素编号(从 1 而不是 0 开始),列表元素是值。像这样:

{1:'a', 2:'b', 3:'c'}

但是对于一个很长的列表。我已经阅读了一些关于 enumerate() 的内容,但我所看到的所有内容都使用列表元素作为键。

我发现了这个:

dict = {tuple(key): idx for idx, key in enumerate(lst)}

但这会产生:

{'a':1, 'b':2, 'c':3}

...这与我想要的相反。而且,还有一种奇怪的符号,让 Python 新手感到困惑。

非常感谢您的建议!谢谢!

【问题讨论】:

标签: python python-3.x list dictionary


【解决方案1】:

enumerate 有一个 start 关键字参数,所以你可以从你想要的任何数字开始计数。然后将其传递给dict

dict(enumerate(lst, start=1))

你也可以写一个字典理解

{index: x for index, x in enumerate(lst, start=1)}

【讨论】:

    【解决方案2】:

    默认枚举从 0 开始,但您可以通过第二个参数 start 设置此值,如果您想从 1 而不是 0 开始,您可以为每个迭代器添加 +1:

    print({index+1:value for index,value in enumerate(lst)})
    

    输出:

    {1: 'a', 2: 'b', 3: 'c'}
    

    上面的dict理解与:

    dict_1={}
    for index,value in enumerate(lst):
        dict_1[index+1]=value
    print(dict_1)
    

    【讨论】:

    • 您可以使用enumeratestart 参数代替加1,它指示枚举应该从哪个数字开始。
    【解决方案3】:

    使用字典理解和枚举

    print({x:y for x,y in enumerate(lst,1)})
    

    {1: 'a', 2: 'b', 3: 'c'}

    使用 Dict Comprehension 、 zip 和 range-

    print({x:y for x,y in zip(range(1,len(lst)+1),lst)})
    

    {1: 'a', 2: 'b', 3: 'c'}

    【讨论】:

      【解决方案4】:

      我认为下面的代码应该会有所帮助。

      my_list = ['A', 'B', 'C', 'D']
      my_index = []
      my_dict = {}
      
      for i in range(len(my_list)): 
          my_index.append(i+1)
      
      for key in my_index: 
          for value in my_list: 
              my_dict[key] = value
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 2014-01-28
        • 2014-02-10
        相关资源
        最近更新 更多