gpt4 book ai didi

python - 从python中的字典列表中删除字典

转载 作者:太空狗 更新时间:2023-10-30 02:10:15 24 4
gpt4 key购买 nike

所以我有一个字典列表,其中每个字典都有两个键值对。有点像

l1 = [{'key1':'value1','key2':'value2'},
{'key1':'value1','key2':'value2'},
...
]

现在我想要的是从这个列表中删除一个字典,只是首先检查 key 和它的 value。我可以检查列表中是否存在整个字典,然后将其删除。但我只想检查列表中是否存在具有特定 first key 的字典。这样的字典将是独一无二的。我想随后从该列表中删除该词典。我该怎么做?

编辑:删除时,我只有一个键值对。所以我想只使用一对删除字典。如果我有这两对,那么我就可以做到

l1.remove({'key1':'value1', 'key2':'value2'})

但事实并非如此,因为我没有另一双。这就是为什么我说词典是独一无二的。

最佳答案

给定,

ds = [{'key1': 'value1', 'key2': 'value2'},
{'key1', 'value3', 'key2', 'value4'},
...]

您可以使用列表理解删除具有唯一键值的字典:

ds = [d for d in ds if d['key1'] != 'value1']

但是你正在遍历整个列表,创建一个没有该字典的新列表,而不是捕获字典。您也可以手动执行此操作:

for i, d in enumerate(ds):
if d['key1'] == 'value1':
d1 = ds.pop(i)
break

在这种情况下,您只遍历必须遍历的内容,不创建新列表并捕获字典。但是,如果您真的关心性能(而不关心顺序),我建议首先按其唯一键值对字典进行分组:

ds = {'value1': {'key1': 'value1', 'key2': 'value2'},
'value3': {'key1', 'value3', 'key2', 'value4'},
...}

因为 ds['value1'] 是 O(1)(立即),而任何遍历都是 O(n)(在最坏的情况下必须遍历整个列表)。

关于python - 从python中的字典列表中删除字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31068162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com