【问题标题】:Python - Convert multiple lists to multiple dictionaries using one of lists as dict namesPython - 使用列表之一作为字典名称将多个列表转换为多个字典
【发布时间】:2015-04-27 15:58:35
【问题描述】:

在一个小型 python 项目上工作并达到了让我难过的地步。

runners = ["Tom","Bob","Bill","Gary"]

runner_id = [123223,234345,356543,487334]

event_id = [11,12,13,14]

event_time = [12.30,13.00,14.00,16.00]

我有上面的数据,并希望为每个跑步者提供一个字典,并将字典命名为跑步者的名字。

所以结果如下:

Tom = {runner_id : 123223, event_id : 11, event_time : 12.30}

Bob = {runner_id : 234345, event_id : 12, event_time : 13.00}

Bill = {runner_id : 356543, event_id : 13, event_time : 14.00}

Gary = {runner_id : 487334, event_id : 14, event_time : 16.00}

对于如何实际将字典命名为我需要的名称感到困惑,即作为原始列表之一的名称。

已阅读大量帖子,但找不到此特定问题的答案。

感谢所有正确方向的有用指示。

非常感谢。

【问题讨论】:

    标签: python list-comprehension dictionary-comprehension


    【解决方案1】:

    您可以使用 dict 理解和 zip 函数:

    runners = ["Tom","Bob","Bill","Gary"]
    runner_id = [123223,234345,356543,487334]
    event_id = [11,12,13,14]
    event_time = [12.30,13.00,14.00,16.00]
    
    print {name:{'runner_id' : i, 'event_id' : j, 'event_time' : k} for i,j,k,name in zip(runner_id,event_id,event_time,runners)}
    

    结果:

    {'Bob': {'event_id': 12, 'event_time': 13.0, 'runner_id': 234345}, 'Bill': {'event_id': 13, 'event_time': 14.0, 'runner_id': 356543}, 'Gary': {'event_id': 14, 'event_time': 16.0, 'runner_id': 487334}, 'Tom': {'event_id': 11, 'event_time': 12.3, 'runner_id': 123223}}
    [Finished in 0.1s]
    

    【讨论】:

      【解决方案2】:

      你必须使用跑步者的名字作为更大字典的键

      runner_dict = {}
      for index, runner in enumerate(runners):
          runner_dict[runner] = {
              'runner_id'  : runner_id[index],
              'event_id'   : event_id[index],
              'event_time' : event_time[index]
          }
      

      【讨论】:

        【解决方案3】:

        如果你有一本包含所有跑步者及其字典的字典,那就更好了。所以你有这个:

        runners = {
            "Tom" : {runner_id : 123223, event_id : 11, event_time : 12.30},
            "Bob" : {runner_id : 234345, event_id : 12, event_time : 13.00},
            "Bill" : {runner_id : 356543, event_id : 13, event_time : 14.00},
            "Gary" : {runner_id : 487334, event_id : 14, event_time : 16.00},
            }
        

        【讨论】:

          【解决方案4】:

          如下

          runners = ["Tom","Bob","Bill","Gary"]
          runner_id = [123223,234345,356543,487334]
          event_id = [11,12,13,14]
          event_time = [12.30,13.00,14.00,16.00]
          
          runners_dict = {}
          for index, runner in enumerate(runners):
              runners_dict[runner] = {
                  'runner_id' : runner_id[index],
                  'event_id' : event_id[index],
                  'event_time' : event_time[index]
              }
          

          如果你想得到某个 runner dict 那么

          runners_dict['name']
          

          【讨论】:

          • 太棒了 - 非常感谢,一直在用“枚举”转圈子:-)
          猜你喜欢
          • 2016-09-14
          • 2017-12-26
          • 1970-01-01
          • 2016-03-18
          • 1970-01-01
          • 2015-07-23
          • 1970-01-01
          相关资源
          最近更新 更多