我有一個字典串列
lst = [{'a': (1, 2, 3), 'b': (2, 3)},
{'c': (3, 6), 'd': (4, 8), 'e': (5, 10)},
{'d': (6, 12), 'e': (7, 14)}]
對于每個字典中的每個鍵,我只想保留值的第一個元素。所以想要的輸出是
[{'a': 1, 'b': 2}, {'c': 3, 'd': 4, 'e': 5}, {'d': 6, 'e': 7}]
我可以使用串列理解來獲得它
[{key: val[0] for key, val in dct.items()} for dct in lst]
但是,我想知道是否可以使用 map、itemgetter、itertools、functools 等獲得相同的輸出。到目前為止我所擁有的:
map(dict.values, lst)
但我不知道如何從這里出發。
uj5u.com熱心網友回復:
對于嵌套迭代,我認為沒有 lambda 運算式的幫助我們無法做到:
from operator import itemgetter, methodcaller
[*map(
lambda items: dict(zip(
map(itemgetter(0), items),
map(itemgetter(0), map(itemgetter(1), items))
)), map(methodcaller('items'), lst))]
# [{'a': 1, 'b': 2}, {'c': 3, 'd': 4, 'e': 5}, {'d': 6, 'e': 7}]
我不得不說它非常丑陋。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/465139.html
