【问题标题】:Python lists comparing and mergingPython列表比较和合并
【发布时间】:2011-07-30 12:26:57
【问题描述】:

我有 2 个列表:

correct_list = [1,2,3,4,5,6,7,8,9,10]
other_list = [4,5,6,7,8,10]

我想合并这两个列表:

combined_list = [{k:1, v:0},{k:2, v:0},{k:3, v:0}, {k:4, v:4}, {etc}]

所以基本上是说关键是正确的列表,如果 other_list 与正确的列表不匹配,则填写 0 或 " " 。并且匹配,填写匹配值

这有意义吗?

我将如何在 python 中做到这一点?

【问题讨论】:

    标签: python list compare


    【解决方案1】:
    [{'k': c, 'v': c if c in other_list else 0} for c in correct_list]
    

    顺便说一句,如果字典的唯一元素是 k 和 v,请考虑构建字典而不是字典列表:

    >>> dict((c, c if c in other_list else 0) for c in correct_list)
    {1: 0, 2: 0, 3: 0, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 0, 10: 10}
    

    【讨论】:

    • 酷,这行得通!谢谢,现在只有一件事,列表排序正确,但不是字典?为什么会这样?
    • @Harry dicts 是无序的。如果订单很重要,请将 dict 替换为 collections.orderedDict,或坚持原来的解决方案。
    • 我将如何给出 v: other_list 值的值,而不是 correct_list 的值?
    • @Harry 用一个辅助函数替换 c if c in other_list else 0,该函数遍历 other_list 的所有对象,将它们与手头的 c 进行比较,然后选择正确的。
    猜你喜欢
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多