【问题标题】:Dictionary to list of strings pair [closed]字典到字符串对列表[关闭]
【发布时间】:2019-11-30 20:39:20
【问题描述】:

我有以下字典:

{'PoP': 4, 'apple': 1, 'anTs': 2, 'poeT': 1}

我希望有一个这样的值列表:

['PoP, 4', 'apple, 1', 'anTs, 2', 'poeT,1']

这就像有一个元组列表但没有括号。 有没有办法做到这一点?

【问题讨论】:

  • 嗨,到目前为止,您为实现这一目标做了哪些尝试?

标签: python list dictionary


【解决方案1】:

TL;DR

elts = {'PoP': 4, 'apple': 1, 'anTs': 2, 'poeT': 1}

res = ["{}, {}".format(key,value) for key, value in elts.items()]

扩展讨论

您希望遍历字典中的项目,并在每次迭代时以您想要的方式将适当的键和值拼接在一起。

我们将从 for 循环开始。

elts = {'PoP': 4, 'apple': 1, 'anTs': 2, 'poeT': 1}

res = []
for key, value in elts.items():
    res.append("{}, {}".format(key, value))

现在我们的 for 循环是我所说的 iterate-then-append 形式,我们可以将它打成单行。

elts = {'PoP': 4, 'apple': 1, 'anTs': 2, 'poeT': 1}


res = ["{}, {}".format(key,value) for key, value in elts.items()]

【讨论】:

    【解决方案2】:

    使用字符串格式和列表推导:

    [f'{k} {v}' for k, v in data.items()]
    

    结果:

    ['PoP 4', 'apple 1', 'anTs 2', 'poeT 1']
    

    【讨论】:

      【解决方案3】:

      一个简单的for循环就可以搞定:

      dict={'PoP': 4, 'apple': 1, 'anTs': 2, 'poeT': 1}
      lst=[]
      for key,value in dict.items():
          lst.append(f"{key},{value}")
      print(lst)
      

      【讨论】:

      • 应该是dict.items(),而不是enumerate(dict)。您也可以在列表推导中执行此操作。
      • @khelwood,非常正确,刚刚更新了示例。我很快就做到了,没有出错,所以认为它有效。列表推导会起作用,但可能不是最容易理解的。
      【解决方案4】:

      使用列表理解:

      dict={'PoP': 4, 'apple': 1, 'anTs': 2, 'poeT': 1}
      lst = [ k + ', ' + str(dict[k]) for k in dict.keys()]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-03
        • 1970-01-01
        • 2021-03-17
        • 2012-08-11
        • 1970-01-01
        • 2019-05-27
        • 2021-08-25
        • 1970-01-01
        相关资源
        最近更新 更多