【问题标题】:How to combine dictionary + list to form one sorted list如何结合字典+列表形成一个排序列表
【发布时间】:2011-10-03 01:43:28
【问题描述】:

好的,我有一本像这样的字典

z = {'J': 50, 'Q': 30, 'F': 10)

还有一个看起来像这样的列表

l = [('J', 20), ('Q', 10), ('F', 2)]

如何在保持原始列表排序的同时将它们组合成字典或列表?我想要一些看起来像的东西

l = [('J', 20, 50), ('Q', 10, 30), ('F', 2, 10)]

感谢您的帮助!

【问题讨论】:

    标签: python list sorting dictionary


    【解决方案1】:
    z = {'J': 50, 'Q': 30, 'F': 10}
    l = [('J', 20), ('Q', 10), ('F', 2)]
    print [(a, b, z[a]) for a, b in l]
    

    给予:

    [('J', 20, 50), ('Q', 10, 30), ('F', 2, 10)]
    

    最好不要将您的列表命名为l。来自PEP 8

    避免使用的名称

    切勿使用字符“l”(小写字母 el)、“O”(大写字母) 字母 oh),或 'I'(大写字母眼睛)作为单个字符变量 名字。

    在某些字体中,这些字符与数字无法区分 一和零。如果想使用“l”,请改用“L”。

    【讨论】:

      【解决方案2】:

      改进 jena 的答案以允许列表中的某些项目从字典中丢失:

      >>> l = [('J', 20), ('Q', 10), ('F', 2), ('A', 5)]
      >>> [x + (z.get(x[0]),) for x in l]
      [('J', 20, 50), ('Q', 10, 30), ('F', 2, 10), ('A', 5, None)]
      

      【讨论】:

        【解决方案3】:

        对于您可以执行的元组列表:

        [item + (z[item[0]],) for item in l]
        

        请注意,z[item[0]] 假定密钥 item[0] 始终存在于 z 中。

        对于字典,请尝试

        dict((item[0], (item[1], z[item[0]])) for item in l)
        

        【讨论】:

          猜你喜欢
          • 2023-02-18
          • 1970-01-01
          • 2013-11-10
          • 2012-03-09
          • 1970-01-01
          • 1970-01-01
          • 2011-09-23
          • 1970-01-01
          相关资源
          最近更新 更多