【问题标题】:Converting a list of tuple of 2+ elements to a dictionary将 2 个以上元素的元组列表转换为字典
【发布时间】:2017-03-31 13:09:16
【问题描述】:

我有一个包含超过 2 个元素的元组列表,其中每个元组的第一个元素是一个在所有元组中唯一的数字。如何将该元组列表转换为字典,其中键是每个元组的第一个元素?

我知道我可以使用 dict(mylist),但它仅适用于 2 元素元组。

【问题讨论】:

  • 您应该能够使用字典理解。你试过什么?
  • 你解析每个元组,将第一个元素设置为键,其余的设置为所述键的值

标签: python dictionary


【解决方案1】:

如果您使用的是 Python 2,请使用 CoryKramer 的答案,如果您使用的是 Python 3,请避免显式索引以支持 Extended Iterable Unpacking

>>> lst = [(1, 'a', 'b'), (2, 'c', 'd')]
>>> {key:tuple(rest) for key, *rest in lst}
{1: ('a', 'b'), 2: ('c', 'd')}

【讨论】:

  • 哇! for key,*rest in lst 就是这样 lisp
  • @quamrana 我不知道任何 lisp。但是扩展的拆包总是让我想起 Haskell。 (当然,Haskell 有更强大的模式匹配断言。)
  • 如何创建数组而不是元组作为值?
  • @Otoma {key:rest for key, *rest in lst} 如果“数组”是指列表。
【解决方案2】:

您可以使用dict 理解

>>> l = [(1, 'a', 'b'),
         (2, 'c', 'd')]
>>> {i[0]: i[1:] for i in l}
{1: ('a', 'b'),
 2: ('c', 'd')}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2017-06-07
    相关资源
    最近更新 更多