【问题标题】:How to remove the dictionary key and retain the values only in list?如何删除字典键并仅保留列表中的值?
【发布时间】:2021-08-09 08:44:09
【问题描述】:

我的变量中有一个字典列表,如下所示:

category = [ { "S" : "Restaurants" }, { "S" : "Drinks" }, { "S" : "Outdoor Seating" }]

我想删除键,它应该只给我值,输出应该如下所示:

[Restaurants,Drinks,Outdoor Seating]    

注意:列表的长度每次都在变化,假设上面的类别变量有 3 个键值对。下一次可能是 2 、 4 或其他数字,但它应该只返回值。怎么做?

【问题讨论】:

    标签: python list dictionary key-value


    【解决方案1】:

    我建议使用列表推导来遍历列表并获取每个字典的所有值。

    category = [ { "S" : "Restaurants" }, { "S" : "Drinks" }, { "S" : "Outdoor Seating" }]
    new = [list(dicx.values())[0] for dicx in category]
    

    输出

    ['Restaurants', 'Drinks', 'Outdoor Seating']
    

    【讨论】:

    • 你能告诉我这里的第一个索引 [0] 代表什么吗?
    【解决方案2】:

    试试这个

    category = [ { "S" : "Restaurants" }, { "S" : "Drinks" }, { "S" : "Outdoor Seating" }]
    for data,cat in enumerate(category):
        for value,key in cat.items():
            category[data]=key
    print(category)
    
    

    【讨论】:

      【解决方案3】:

      答案的本质是遍历列表,并为每个字典提取所需的值并将其粘贴到新列表中。

      假设每个字典只有一个带有键 "S" 的条目,如您的示例所示,您可以在一行中完成:

      l = [d["S"] for d in category]
      

      在更一般的情况下,如果我们不假设每个字典中的条目数,单行解决方案只会变得稍微笨拙

      l = [value for d in category for value in d.values()]
      

      就个人而言,我发现多线解决方案更容易理解:

      l = []
      for d in category:
          for value in d.values():
              l.append(value)
      

      【讨论】:

      • 当然可以,它很容易从您的循环转换为[value for d in category for value in d.values()]
      • 哇!我以前从未使用过这种语法!
      猜你喜欢
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 2018-08-26
      相关资源
      最近更新 更多