<p>您可以使用此功能(请注意,列表已在原地修改):</p>
<p><strong>代码:</strong></p>
<pre><code>def f(l):
for d in l:
for k, v in d.items():
if isinstance(v, list):
d[k] = v[0]
return l
</code></pre>
<p><strong>输出:</strong></p>
<pre><code>>>> f(lst)
[{'item1': value1,
'item2': {'tinyitem21': tinyvalue21, 'tinyitem22': tinyvalue22}},
{'item3': {'tinyitem31': tinyvalue31, 'tinyitem32': tinyvalue32},
'item4': value4}]
</code></pre>
<p><strong>您也可以使用列表/听写理解:</strong></p>
<pre><code>>>> [{k: v[0] if isinstance(v, list) else v for k, v in d.items()} for d in lst]
[{'item1': value1,
'item2': {'tinyitem21': tinyvalue21, 'tinyitem22': tinyvalue22}},
{'item3': {'tinyitem31': tinyvalue31, 'tinyitem32': tinyvalue32},
'item4': value4}]
</code></pre>
<p><strong>如果嵌套列表/目录多于一个级别,则可以使用此递归函数:</strong></p>
<pre><code>def f(lst):
return [recursive_function(d) for d in lst]
def recursive_function(d):
rv = {}
for k, v in d.items():
if isinstance(v, list):
v = v[0]
if isinstance(v, dict):
v = recursive_function(v)
rv[k] = v
return rv
</code></pre>
<p><strong>用法:</strong></p>
<pre><code>>>> lst = [{'item1': value1,
'item2': [{'tinyitem21': [{'tinyitem21': tinyvalue21,
'tinyitem22': tinyvalue22}],
'tinyitem22': tinyvalue22}]},
{'item3': [{'tinyitem31': tinyvalue31, 'tinyitem32': tinyvalue32}],
'item4': value4}]
>>> f(lst)
[{'item1': 'value1',
'item2': {'tinyitem21': {'tinyitem21': tinyvalue21,
'tinyitem22': tinyvalue22},
'tinyitem22': tinyvalue22}},
{'item3': {'tinyitem31': tinyvalue31, 'tinyitem32': tinyvalue32},
'item4': value'}]
</code></pre>