<p>这闻起来像<a href="//meta.stackexchange.com/q/66377/174780">X-Y Problem</a>。您不希望显示未签出工具的人员,但实际上不需要将其从列表中删除即可。您依赖<code>pprint</code>将字典转换为字符串,然后再处理该字符串。相反,只需从头开始构建字符串,并且不包括未签出工具的人员</p>
<pre><code>data=json.load(json_file)
credData = data['Credentials']
# Since you're the one creating the string, you can choose what you want to put in it
# No need to create a NEW dictionary without the username keys
outstr = ""
for person in credData:
outstr += person['realName'] + ": " + ", ".join(person['toolsOut']) + "\n"
print(outstr)
</code></pre>
<p>这张照片是:</p>
<pre class="lang-none prettyprint-override"><code>Mark Toga: TL-482940, TL-482940
Burt Mader:
Tim Johnson: TL-482940
</code></pre>
<p>现在,由于您想忽略没有任何工具的人员,请添加该条件</p>
<pre><code>outstr = ""
for person in credData:
if person['toolsOut']:
outstr += person['realName'] + ": " + ", ".join(person['toolsOut']) + "\n"
print(outstr)
</code></pre>
<p>你会得到:</p>
<pre class="lang-none prettyprint-override"><code>Mark Toga: TL-482940,TL-482940
Tim Johnson: TL-482940
</code></pre>
<p><code>if person['toolsOut']</code>与<code>if len(person['toolsOut']) == 0</code>相同,因为空列表是<a href="https://stackoverflow.com/q/39983695/843953">Falsy</a></p>
<p>如果<em>确实</em>要删除<code>credData</code>中具有空<code>toolsOut</code>键的元素,可以在列表理解中使用相同的条件</p>
<pre><code>credData2 = [person for person in credData if person['toolsOut'])
</code></pre>