【问题标题】:Python map list of two-element tuples into key:value dictPython将二元素元组的列表映射到键:值字典中
【发布时间】:2019-05-09 08:32:26
【问题描述】:

我有一个 rest API 端点,它以 JSON 格式返回可用国家/地区的列表,例如:

[["ALL","Albania Lek"],["AFN","Afghanistan Afghani"],["ARS","Argentina Peso"],["AWG","Aruba Guilder"],["AUD","Australia Dollar"]]

我需要把它转换成

{
"ALL":"Albania Lek",
"AFN":"Afghanistan Afghani",
"ARS":"Argentina Peso"
}

我怎样才能快速有效地做到这一点?

【问题讨论】:

标签: python


【解决方案1】:

我认为

{k:v for k,v in the_list}

比 dict(the_list) 好,因为它不调用函数。因此,性能方面的理解获胜。

查看测试:https://doughellmann.com/blog/2012/11/12/the-performance-impact-of-using-dict-instead-of-in-cpython-2-7-2/

并且: https://medium.com/@jodylecompte/dict-vs-in-python-whats-the-big-deal-anyway-73e251df8398

【讨论】:

  • 我刚刚运行了一些计时(使用 3.6.6),这似乎并不准确。对于 1000 万个项目列表 (list(zip(range(10000000), range(10000000)))),理解的时间为 1.23 sec per loopdict 调用的时间为 1.06 sec per loop
【解决方案2】:

dict() 构造函数直接从键值对序列构建字典,如documentation 中所述。所以就这么简单:

the_list = [['ALL', 'Albania Lek'],
            ['AFN', 'Afghanistan Afghani'], 
            ['ARS', 'Argentina Peso'], 
            ['AWG', 'Aruba Guilder'],
            ['AUD', 'Australia Dollar']]

dict(the_list)

=> {
     'AWG': 'Aruba Guilder',
     'ALL': 'Albania Lek', 
     'ARS': 'Argentina Peso',
     'AFN': 'Afghanistan Afghani',
     'AUD': 'Australia Dollar'
   }

【讨论】:

  • 我添加了两个参考文献,快速有效地记录 {} over dict()
【解决方案3】:

另一个 1 班轮选项是字典理解

{x[0]:x[1] for x in the_list}

【讨论】:

    猜你喜欢
    • 2017-06-28
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 2023-03-15
    相关资源
    最近更新 更多