【问题标题】:How to convert dictionary key-value pairs to tuples如何将字典键值对转换为元组
【发布时间】:2017-10-12 21:33:17
【问题描述】:

必须转换这个:

d = {"k1": ("v1"), "k2": ("v2"), "k3": ("v3")}

到这里:

[('k1, v1'), ('k2, v2'), ('k2, v3')]

我试过了:

[(k, v) for k, v in d.items()]

但是得到了这个:

[('k1', ('v1')), ('k2', ('v2')), ('k3', ('v3'))]

关闭,但我不能有那些额外的括号。

【问题讨论】:

  • 如果您确定格式,只需使用 (k, v[0])
  • 注意,[(k,v) for k,v in d.items()] 应该只是 list(d.items()),如果评估,它会给我[('k2', 'v2'), ('k3', 'v3'), ('k1', 'v1')]你提供的示例。另请注意,您的错误输出示例[('k1', ('v1')), ('k2', ('v2')), ('k3', ('v3'))] 实际上计算为[('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]。那么,究竟你有什么?
  • 你确定你的字典不是{"k1": ("v1",), "k2": ("v2",), "k3": ("v3",)}吗?否则,这些值应该是字符串,而不是元组。

标签: python python-3.x dictionary tuples data-conversion


【解决方案1】:
d = {"k1": ("v1"), "k2": ("v2"), "k3": ("v3")}
print [(k, v) for k, v in d.items()]

已经返回

[('k3', 'v3'), ('k2', 'v2'), ('k1', 'v1')]

(和实际做list(d.items())一样)


现在,如果你的字典真的是

d = {"k1": ("v1",), "k2": ("v2",), "k3": ("v3",)}

那么这将解释您的输出。在这种情况下,您需要这样做

print [(k, v[0]) for k, v in d.items()]

【讨论】:

    【解决方案2】:

    你可以试试这个:

    d = {"k1": ("v1"), "k2": ("v2"), "k3": ("v3")}
    new_data = list(d.items())
    

    输出:

    [('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]
    

    【讨论】:

      【解决方案3】:

      给你:

      >>> d = {"k1": ("v1"), "k2": ("v2"), "k3": ("v3")}
      >>> [(a,d[a]) for a in d]
      [('k3', 'v3'), ('k2', 'v2'), ('k1', 'v1')]
      

      【讨论】:

      • 这只是 list(d.items()) 的间接方式,OP 已经报告他们已经尝试过。
      • 不,d[a] 不是一个列表(不像解包d.items()),看看我的结果。
      • 您的代码完全相同。试试list(d.items()
      • 是的,OP 的问题肯定没有充分说明。
      【解决方案4】:

      只需将字符串从列表理解中的元组中索引出来,即,

       [(k, v[0]) for k, v in d.items()]
      

      这给了

       [('k3', 'v'), ('k2', 'v'), ('k1', 'v')]
      

      【讨论】:

        猜你喜欢
        • 2011-09-29
        • 2019-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-28
        • 1970-01-01
        相关资源
        最近更新 更多