如何删除字典键并仅保留列表中的值?

How to remove the dictionary key and retain the values only in list?

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

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

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

[Restaurants,Drinks,Outdoor Seating]    

注意:列表的长度每次都不同,假设上面的类别变量有 3 个键值对。下次它可能是 2 、 4 或其他一些数字,但它应该 return 只有值。如何做?

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

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

输出

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

试试这个

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)

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

假设每个字典只有一个带有键 "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)