我是python的初学者。
我正在尝试从此字典中删除所有“noone:0”,因此它看起来与下面相同,但没有任何“noone:0”:
G = {'a': {'b': 10, 'c': 8, 'd': 3, 'noone': 0, 'e': 3}, 'f': {'g': 7, 'c': 5, 'h': 5, 'i': 2, 'j': 4, 'noone': 0, 'l': 2}}
Run Code Online (Sandbox Code Playgroud)
我搜索并找到了我应该实现它的所有方法,但找不到有效的方法。我试过这个无济于事:
for i in G:
if str(G[i]) == 'noone':
G.pop('noone', None)
Run Code Online (Sandbox Code Playgroud)
我相信这会做你想要的。
for i in G:
if 'noone' in G[i]:
G[i].pop('noone')
Run Code Online (Sandbox Code Playgroud)
您在这里 (G) 拥有的确实是一本字典,但更具体地说,它是一本字典,其值也是字典。因此,当我们遍历 G ( for i in G) 中的所有键时,每个键对应的值 ( G[i]) 就是一个字典。如果您尝试运行,您可以亲眼看到这一点:
for i in G:
print(G[i])
Run Code Online (Sandbox Code Playgroud)
所以你真正想要做的是从 G 中的每个字典中弹出。也就是说,对于每个 G[i],你想从那些“子”字典中删除 ' noone',而不是主要的顶部字典。
PS:如果你真的想利用python的方便,你甚至可以简单地写
for i in G:
G[i].pop('noone', None)
Run Code Online (Sandbox Code Playgroud)
通过在pop 中使用第二个参数,您甚至不必首先检查 'noone' 是否是 G[i] 中的键,因为 pop 方法不会引发异常。(如果你在没有第二个参数的情况下尝试这个双行,你会得到所有没有“noone”的子字典的错误)。
| 归档时间: |
|
| 查看次数: |
6618 次 |
| 最近记录: |