【问题标题】:convert list elements to dictionary python将列表元素转换为字典python
【发布时间】:2013-06-10 21:55:52
【问题描述】:

我有一个格式如下的列表

['iad-cgnt:248.600000,ord-cgnt:319.301775,iad-mci:331.185117,nyc-inap:316.122925,hkg-pccw:452.789753,ord-tata:243.000000,sjc-l3:321.487964,pvg-cu2:40.912496,nyc-bgp:382.419130,nyc-cgnt:332.477115,bgl-rel:311.344224,pvg-cu1:38.750000']

我需要从这个列表中构造一个字典,格式如下:

{'iad-cgnt' : 248.600000 , 'ord-cgnt':319.301775 } ... and  so on. 

您能否建议如何做到这一点?

【问题讨论】:

  • 我已经尝试在 final 中基于 for d 进行拆分:parts = d.split(':') fin.append(parts) print fin 但它并没有按照我想要的方式拆分': '

标签: python list dictionary


【解决方案1】:

假设:

data = 'iad-cgnt:248.600000,ord-cgnt:319.301775,iad-mci:331.185117,nyc-inap:316.122925,hkg-pccw:452.789753,ord-tata:243.000000,sjc-l3:321.487964,pvg-cu2:40.912496,nyc-bgp:382.419130,nyc-cgnt:332.477115,bgl-rel:311.344224,pvg-cu1:38.750000'

您可以通过以下方式获取字典:

dict([item.split(':') for item in data[0].split(',')])

作为输出

{'bgl-rel': '311.344224',
 'hkg-pccw': '452.789753',
 'iad-cgnt': '248.600000',
 'iad-mci': '331.185117',
 'nyc-bgp': '382.419130',
 'nyc-cgnt': '332.477115',
 'nyc-inap': '316.122925',
 'ord-cgnt': '319.301775',
 'ord-tata': '243.000000',
 'pvg-cu1': '38.750000',
 'pvg-cu2': '40.912496',
 'sjc-l3': '321.487964'}

【讨论】:

    【解决方案2】:

    字典理解:

    L = ['iad-cgnt:248.600000,ord-cgnt:319.301775,iad-mci:331.185117,...pvg-cu1:38.750000']
    {k: float(v) for k, v in (item.split(':') for item in L[0].split(','))}
    

    值作为浮点数的结果:

    {'bgl-rel': 311.344224,
     'hkg-pccw': 452.789753,
     'iad-cgnt': 248.6,
     'iad-mci': 331.185117,
     'nyc-bgp': 382.41913,
     'nyc-cgnt': 332.477115,
     'nyc-inap': 316.122925,
     'ord-cgnt': 319.301775,
     'ord-tata': 243.0,
     'pvg-cu1': 38.75,
     'pvg-cu2': 40.912496,
     'sjc-l3': 321.487964}
    

    【讨论】:

      【解决方案3】:

      列表中的项目与字典的字符串表示非常接近, 一点点文字摆弄就可以了:

      zot = ['iad-cgnt:248.600000,ord-cgnt:319.301775,iad-mci:331.185117,nyc-inap:316.122925,hkg-pccw:452.789753,ord-tata:243.000000,sjc-l3:321.487964,pvg-cu2:40.912496,nyc-bgp:382.419130,nyc-cgnt:332.477115,bgl-rel:311.344224,pvg-cu1:38.750000']
      s = '{"'+zot[0].replace(',', ',"').replace(':', '":')+'}'
      d = eval(s)
      print d.keys()
      

      给出字典的键:

      ['iad-cgnt', 'nyc-bgp', 'ord-cgnt', 'bgl-rel', 'nyc-cgnt', 'nyc-inap', 'sjc-l3', 'hkg-pccw', 'pvg-cu1', 'pvg-cu2', 'ord-tata', 'iad-mci']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-25
        • 1970-01-01
        • 2015-07-23
        • 1970-01-01
        • 2013-04-01
        相关资源
        最近更新 更多