擅长:python、mysql、java
<p>我会用递归来做:</p>
<pre><code>def take_nth_value_from_lists_in_nested_dict(obj, n: int):
if isinstance(obj, dict):
return {k: take_nth_value_from_lists_in_nested_dict(v, n) for k, v in obj.items()}
if isinstance(obj, list):
return take_nth_value_from_lists_in_nested_dict(obj[n-1], n)
return obj
</code></pre>
<pre><code>>>> take_nth_value_from_lists_in_nested_dict({'a': ['A', 'B', 'C'], 'b': ['A', 'B', 'C'], 'key1': {'c': ['A', 'B', 'C'], 'd': ['A', 'B', 'C']}, 'key2': {'e': 0, 'f': 0}}, 2)
{'a': 'B', 'b': 'B', 'key1': {'c': 'B', 'd': 'B'}, 'key2': {'e': 0, 'f': 0}}
</code></pre>
<p>这应该适用于任意深度嵌套,包括在列表元素内(例如,如果第n个列表元素本身是包含更多dict/列表的dict)</p>