【问题标题】:Dictionary from List in Python based on length of list [duplicate]基于列表长度的Python列表字典[重复]
【发布时间】:2019-01-19 23:13:45
【问题描述】:

我在 python 中有以下列表

 days = ['Saturday', 'Monday', 'Thursday', 'Friday', 'Tuesday', 'Sunday', 
        'Wednesday']

我想创建以下字典

dayweek = {'Saturday': 1, 'Monday': 2, 'Thursday': 3, 'Friday': 4, 'Tuesday': 
5, 'Sunday': 6, 'Wednesday': 7}

我试过下面的代码

     dayweek=dict(enumerate(days))

这会产生以下结果

  {0: 'Saturday', 1: 'Monday', 2: 'Thursday', 3: 'Friday', 4: 'Tuesday', 5: 
  'Sunday', 6: 'Wednesday'}

我如何做到这一点

我请求某人帮助我

【问题讨论】:

  • 检查@Aran-Fey 链接的问题并使用enumerate(days, 1) 处理您的偏移量。
  • 谢谢。它已经解决了这个问题

标签: python list dictionary string-length


【解决方案1】:

只需使用字典理解:

>>> m={d:i+1 for i,d in enumerate(days)}
>>> m
{'Saturday': 1, 'Monday': 2, 'Thursday': 3, 'Friday': 4, 'Tuesday': 5, 'Sunday': 6, 'Wednesday': 7}

【讨论】:

    【解决方案2】:

    试试这个:

    dict(zip(days, range(1, len(days)+1)))
    

    输出:

    {'Monday': 2, 'Tuesday': 5, 'Friday': 4, 'Wednesday': 7, 'Thursday': 3, 'Sunday': 6, 'Saturday': 1}
    

    【讨论】:

      【解决方案3】:

      你可以给enumerate一个起始值1并使用字典推导:

      days = ['Saturday', 'Monday', 'Thursday', 'Friday', 'Tuesday', 'Sunday', 
              'Wednesday']
      
      dayweek = { day:index for index, day in enumerate(days, 1)}
      print(dayweek)
      
      # {'Saturday': 1, 'Monday': 2, 'Thursday': 3, 'Friday': 4, 'Tuesday': 5, 'Sunday': 6, 'Wednesday': 7}
      

      【讨论】:

        【解决方案4】:

        看看这个:

        dict([(j, i) for i, j in enumerate(days, 1)])
        

        【讨论】:

        • 您在从中构建字典之前创建一个中间列表,这比使用字典理解效率低且慢得多,请参阅我的答案。一些时间:在我的机器上,dict理解需要 1.66µs,你的解决方案需要 3.08µs
        • 有道理。我通常不会深入研究 7 项的细节,但蒂埃里是对的。
        猜你喜欢
        • 1970-01-01
        • 2020-05-19
        • 1970-01-01
        • 2021-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多