从字典列表中删除键

时间:2021-07-23 11:59:06

标签: python

我有一个清单:

[{'key':'key1', 'version':'1'}, {'key':'key2', 'version':'2'}, {'key':'key3', 'version':'3'}]

我想从列表中的字典中删除所有其他键,并且只有“键”及其值,所以列表看起来像这样:

[{'key': 'key1'}, {'key': 'key2'}, {'key': 'key3'}]

我如何提取它?

4 个答案:

答案 0 :(得分:2)

这是一个简单的解决方案。这使用 .pop() 方法删除您不想要的密钥。 -

lst = [{'key':'key1','version':'1'},{'key':'key2','version':'2'},{'key':'key3','version':'3'}]

for dicts in lst:
    dicts.pop('version')

print(lst)

结果

[{'key': 'key1'}, {'key': 'key2'}, {'key': 'key3'}]

这会删除所有 version 键。或者您可以使用此方法删除除所需密钥之外的所有内容:

new_l = []
for d in lst:
    for key in d:
        if key == 'key':
            new_l.append({key: d[key]})
print(new_l)

或者更简单的是,您可以使用列表和字典理解来解决这个问题。我建议您这样做,因为它更可读效率更高。

new_l = [{key: d[key] for key in d if key == 'key'} for d in lst]
print(new_l)

答案 1 :(得分:0)

你可以试试这个:

l1 = [{'key':'key1','version':'1'},{'key':'key2','version':'2'},{'key':'key3','version':'3'}]

li2 = [{'key': j[x]} for j in l1 for x in j if x=='key']
print(li2)

答案 2 :(得分:0)

试试这个:

lst = [{'key':'key1','version':'1'},{'key':'key2','version':'2'},{'key':'key3','version':'3'}]

[item.pop('version') for item in lst]

或者,删除所有可能与“key”不匹配的键:

lst = [{'key':'key1','version':'1'},{'key':'key2','version':'2'},{'key':'key3','version':'3'}]
for item in lst:
    for key in list(item.keys()):
        item.pop(key) if key!='key' else None

答案 3 :(得分:0)

你可以试试这个 一行!

yourList = [{'key':'key1','version':'1'},{'key':'key2','version':'2'},{'key':'key3','version':'3'}]
resultList = [{'key':dic['key']} for dic in yourList if 'key' in dic]
print(resultList)