只保留嵌套字典的第一个元素
Keep only the first element of a nested dict
比如有没有办法改变
{'z': {'pl': 0.1001692265,
'sa': 0.0899505839},
'y': {'ap': 0.0734830126}}
进入
{'z': {'pl': 0.1001692265},
'y': {'ap': 0.0734830126}}
我正在寻找一种动态的解决方案,而不仅仅是基于这种情况下的密钥值(即 'sa')
谢谢!
字典里没有 'first element' 这样的东西。 Python 字典是无序的。
如果您需要一个类似字典的结构来维持秩序,OrderedDict
类型的 Python 的 collections 库是一个选项。
要获取第一个 key-value 对,以 d 作为原始字典,您可以使用:
# Using suggestion by Ch3steR
{k:dict([next(iter(v.items()))]) for k, v in d.items()}
或按照 MechanicPig 的建议使用 itertools.islice
{k:dict(itertools.islice(v.items(), 1)) for k, v in d.items()}
使用itertools.islice
可能是最优雅的方式:
>>> dct = {'z': {'pl': 0.1001692265, 'sa': 0.0899505839}, 'y': {'ap': 0.0734830126}}
>>> {k: dict(islice(v.items(), 1)) for k, v in dct.items()}
{'z': {'pl': 0.1001692265}, 'y': {'ap': 0.0734830126}}
Python3.8+
在字典理解中,我们循环遍历外部字典。我们可以将内部字典转换为迭代器并使用 next
获取第一个元素。我们可以使用walrus operator来存储密钥。
{k: {(k1:=next(iter(v))): v[k1]} for k, v in d.items()}
# {'z': {'pl': 0.1001692265}, 'y': {'ap': 0.0734830126}}
比如有没有办法改变
{'z': {'pl': 0.1001692265,
'sa': 0.0899505839},
'y': {'ap': 0.0734830126}}
进入
{'z': {'pl': 0.1001692265},
'y': {'ap': 0.0734830126}}
我正在寻找一种动态的解决方案,而不仅仅是基于这种情况下的密钥值(即 'sa')
谢谢!
字典里没有 'first element' 这样的东西。 Python 字典是无序的。
如果您需要一个类似字典的结构来维持秩序,OrderedDict
类型的 Python 的 collections 库是一个选项。
要获取第一个 key-value 对,以 d 作为原始字典,您可以使用:
# Using suggestion by Ch3steR
{k:dict([next(iter(v.items()))]) for k, v in d.items()}
或按照 MechanicPig 的建议使用 itertools.islice
{k:dict(itertools.islice(v.items(), 1)) for k, v in d.items()}
使用itertools.islice
可能是最优雅的方式:
>>> dct = {'z': {'pl': 0.1001692265, 'sa': 0.0899505839}, 'y': {'ap': 0.0734830126}}
>>> {k: dict(islice(v.items(), 1)) for k, v in dct.items()}
{'z': {'pl': 0.1001692265}, 'y': {'ap': 0.0734830126}}
Python3.8+
在字典理解中,我们循环遍历外部字典。我们可以将内部字典转换为迭代器并使用 next
获取第一个元素。我们可以使用walrus operator来存储密钥。
{k: {(k1:=next(iter(v))): v[k1]} for k, v in d.items()}
# {'z': {'pl': 0.1001692265}, 'y': {'ap': 0.0734830126}}