gpt4 book ai didi

python - 如何从字典的字典中删除所有出现的项目?

转载 作者:行者123 更新时间:2023-11-28 21:54:27 25 4
gpt4 key购买 nike

我有一本字典的字典。键是图中的节点。例如,假设图中的节点 i 由字典中的键 i 表示。与此键对应的值也是一个字典,其中键是图中节点 i 的邻居。这些键的默认值为 1。让我们考虑以下示例-

图中的节点是 - [1,2,3,4,5,6]

邻居:

1->[2,4,5,6]

2->[3]

3->[4,6]

4->[1,6]

5->[1]

6->[1,3,4]

所以字典的字典看起来像这样:

{1:{2:1,4:1,5:1,6:1},2:{3:1},3:{4:1,6:1},4:{1:1,6:1},5:{1:1},6:{1:1,3:1,4:1}}

现在,在我尝试实现的算法的不同阶段,我需要从其他节点的邻居列表中删除所有出现的节点 x。如果x=4,那么删除之后dictionary的dictionary应该是这样的:

{1:{2:1,5:1,6:1},2:{3:1},3:{6:1},4:{1:1,6:1},5:{1:5},6:{1:1,3:1}}

为了提高删除效率,我使用了字典的字典而不是列表的字典。但它仍然很昂贵。

这样做最有效的是什么?

最佳答案

使用字典理解:

{ok: {ik: iv for ik, iv in ov.iteritems() if ik != x} 
for ok, ov in yourdict.iteritems()}

这将重建您的字典,并从内部字典中省略所有与 x 匹配的键。

iteritems() 替换为 Python 3 中的 items()

演示:

>>> yourdict = {1:{2:1,4:1,5:1,6:1},2:{3:1},3:{4:1,6:1},4:{1:1,6:1},5:{1:5},6:{1:1,3:1,4:1}}
>>> x = 4
>>> {ok: {ik: iv for ik, iv in ov.iteritems() if ik != x}
... for ok, ov in yourdict.iteritems()}
{1: {2: 1, 5: 1, 6: 1}, 2: {3: 1}, 3: {6: 1}, 4: {1: 1, 6: 1}, 5: {1: 5}, 6: {1: 1, 3: 1}}

关于python - 如何从字典的字典中删除所有出现的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24223300/

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