如何减少字典列表
How do I reduce list of dictionaries
我在 python 中有一个词典列表。例如
mylist = [
{'a': 'x', 'b':'y', 'c':'z'},
{'a':'e','b':'f','c':'g'},
{'a':'h','b':'i','c':'j'}
]
我如何将其映射到
mynewlist = [
{'a':'x'},
{'a','e'},
{'a':'h'}
]
和
mynewlist2 = [
{'a':'x','b':'y'},
{'a','e','b':'f'},
{'a':'h','b':'i'}
]
您可以使用列表理解来执行此操作:
mynewlist = [{'a': item['a']} for item in mylist]
循环列表并从字典中获取 a
值。对于 mynewlist2
,只需做同样的事情,但有 2 个值:
mynewlist2 = [{'a': item['a'], 'b': item['b']} for item in mylist]
像下面这样的东西应该可以解决问题。请注意,这只会保留 trunc_size
个嵌套字典。不特定于条目 a
和 b
。目前还不清楚需要哪个,但如果您的字典中的键发生变化,目前关于此问题的两个答案将产生不同的结果。
def truncate_nested_dicts(list_of_dicts, trunc_size):
outlist = []
outdict = {}
for d in list_of_dicts:
for k,v in list(d.items())[:trunc_size]:
outdict[k]=v
outlist.append(outdict)
outdict={}
return outlist
print(truncate_nested_dicts(mylist, 2))
>>>[{'a': 'x', 'b': 'y'}, {'a': 'e', 'b': 'f'}, {'a': 'h', 'b': 'i'}]
我在 python 中有一个词典列表。例如
mylist = [
{'a': 'x', 'b':'y', 'c':'z'},
{'a':'e','b':'f','c':'g'},
{'a':'h','b':'i','c':'j'}
]
我如何将其映射到
mynewlist = [
{'a':'x'},
{'a','e'},
{'a':'h'}
]
和
mynewlist2 = [
{'a':'x','b':'y'},
{'a','e','b':'f'},
{'a':'h','b':'i'}
]
您可以使用列表理解来执行此操作:
mynewlist = [{'a': item['a']} for item in mylist]
循环列表并从字典中获取 a
值。对于 mynewlist2
,只需做同样的事情,但有 2 个值:
mynewlist2 = [{'a': item['a'], 'b': item['b']} for item in mylist]
像下面这样的东西应该可以解决问题。请注意,这只会保留 trunc_size
个嵌套字典。不特定于条目 a
和 b
。目前还不清楚需要哪个,但如果您的字典中的键发生变化,目前关于此问题的两个答案将产生不同的结果。
def truncate_nested_dicts(list_of_dicts, trunc_size):
outlist = []
outdict = {}
for d in list_of_dicts:
for k,v in list(d.items())[:trunc_size]:
outdict[k]=v
outlist.append(outdict)
outdict={}
return outlist
print(truncate_nested_dicts(mylist, 2))
>>>[{'a': 'x', 'b': 'y'}, {'a': 'e', 'b': 'f'}, {'a': 'h', 'b': 'i'}]