作者:小旭zZ | 来源:互联网 | 2022-11-25 11:25
我有一个词典列表
ld = [{'a':1}, {'b':2, 'c':3}, {'d':4, 'e':5}]
我需要从列表中获取所有长度最长的元素,即
{'b':2, 'c':3}` and `{'d':4, 'e':5}
我对Python不是很了解,但我发现:
>>> max(ld, key=len)
{'b': 2, 'c': 3}`
而且,一个更好的解决方案,返回最长字典的索引:
>>> max(enumerate(ld), key=lambda tup: len(tup[1]))
(1, {'b': 2, 'c': 3})
我想使用一个返回类似的表达式
(1: {'b': 2, 'c': 3}, 2: {'d':4, 'e':5})
我觉得我离解决方案不远(或者我可能)但我只是不知道如何得到它.
1> Ajax1234..:
您可以在结构中找到最大字典的长度,然后使用列表解析:
ld = [{'a':1}, {'b':2, 'c':3}, {'d':4, 'e':5}]
_max = max(map(len, ld))
new_result = dict(i for i in enumerate(ld) if len(i[-1]) == _max)
输出:
{1: {'b': 2, 'c': 3}, 2: {'d': 4, 'e': 5}}