我正在尝试遍历一个字典列表,目标是根据另一个 k,v 对的值从一个 k,v 对生成值列表。每个字典包含两个k,v对,它们各自的键是相同的。
例如,给定这个列表:
dict_list =[{'basket': 1, 'fruit': 'apple'},
{'basket': 1, 'fruit': 'orange'},
{'basket': 1, 'fruit': 'peach'},
{'basket': 2, 'fruit': 'kiwi'},
{'basket': 2, 'fruit': 'lemon'},
{'basket': 3, 'fruit': 'grape'}]
我想生成这个列表:
list_list = [['apple','orange','peach'],
['kiwi','lemon'],
['grape']]
我很难通过迭代来实现隔离列表。到目前为止,我只能得到所有水果值的列表。感谢您提出任何建议。
最佳答案
您可以使用 itertools 中的 groupby。
import itertools
list_list = [[f['fruit'] for f in v] for k, v in itertools.groupby(dict_list, key=lambda x: x['basket'])]
这假设 dict_list
中的篮子条目已排序(或者相同的篮子在列表中彼此相邻)。如果不是这种情况,只需在 groupby
之前排序。
关于python - 如何根据具有两个键值对的字典列表中的另一个 k-v 对的值从一个键值对创建值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57517287/