【问题标题】:decompose a tupple in a comprehension list分解理解列表中的元组
【发布时间】:2018-08-06 15:03:24
【问题描述】:

我有一本字典,其中的键是元组。我正在寻找一个理解列表来分解列表中的元组

dicto={(1,2):1, (3,4):1, (5,6):3}
expected outcome: [1,2,3,4,5,6] (order doesnt matter)

到目前为止,我想出的最好的是:

[x for x, y in dicto.keys()] ### [x, y for x, y in dicto.keys()] doesnt work :-(

有没有一种优雅而优雅的方式可以在一行中实现这一点?

谢谢

【问题讨论】:

    标签: python dictionary tuples


    【解决方案1】:

    您可以获取dict 的所有密钥,用itertools.chain 将其展平以获得您想要的结果

    >>> import itertools
    >>> dicto={(1,2):1, (3,4):1, (5,6):3}
    >>> list(itertools.chain(*dicto.keys()))
    >>> [1, 2, 5, 6, 3, 4]
    

    您也可以使用itertools.chain.from_iterable 来展平嵌套的元组列表(字典键)

    >>> import itertools
    >>> dicto={(1,2):1, (3,4):1, (5,6):3}
    >>> list(itertools.chain.from_iterable(dicto.keys()))
    >>> [1, 2, 5, 6, 3, 4] 
    

    【讨论】:

    • 好答案。还有list(itertools.chain.from_iterable(dicto.keys()))
    【解决方案2】:

    您使用单一理解将dicto.keys() 展平:

    dicto={(1,2):1, (3,4):1, (5,6):3}
    final_result = [i for b in dicto.keys() for i in b]
    

    输出:

    [1, 2, 5, 6, 3, 4]
    

    【讨论】:

      【解决方案3】:

      您可以使用reduce函数来组合列表:

      dicto = {(1,2):1, (3,4):1, (5,6):3}
      your_list = list(reduce(lambda a, b: a + b, dicto.keys()))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-25
        • 1970-01-01
        • 2021-10-06
        • 1970-01-01
        • 1970-01-01
        • 2022-12-24
        • 1970-01-01
        • 2017-11-28
        相关资源
        最近更新 更多