<p>很多文本,但您需要的是从<code>list</code>中删除<code>dict</code>?!
您的列表不是<code>i</code>(列表的元素),而是<code>v2</code>,因此请确保为您的变量起好名字,并将<code>for</code>更改为<code>while</code>,因为在迭代过程中删除可能会导致问题</p>
<pre><code>for k1, v1 in profiles_dict.items():
for k2, v2 in v1.items():
if type(v2) != list:
continue
i = 0
while i < len(v2):
for k3, v3 in v2[i].items():
if v3 == []:
v2.pop(i) #remove k3 if v3 empty from list v2 at index i
i -= 1 #decrease index i
break #cause k3, v3 in v2[i].items() does not exist anymore
i += 1
</code></pre>
<p>如果<code>list</code>{<cd4>}中的一个项目<code>dict</code>包含多个不为空的<code>k3</code>,并且您不想将其删除,则可以将空的项目存储在新的<code>list</code>{<cd12>}中供以后使用。
如果<code>remove_keys</code>包含与整个<code>dict</code>相同的数量,您可以从<code>v2</code>中<code>.pop(index)</code>它,否则<code>.pop(key)</code>所有存储的密钥只能从当前<code>dict</code>{<cd19>}中存储</p>
<pre><code>for k1, v1 in profiles_dict.items():
for k2, v2 in v1.items():
if type(v2) != list:
continue
i = 0
while i < len(v2):
remove_keys = [] #store k3 when v3 == []
for k3, v3 in v2[i].items():
if v3 == []:
remove_keys.append(k3)
if len(remove_keys) == len(v2[i]): #if this would remove all keys
v2.pop(i) #delete whole "empty" dict again...
i -= 1
else:
for k3 in remove_keys: #remove stored keys from dict in v2 at i
v2[i].pop(k3)
i += 1
</code></pre>