In Python, I'm looking to edit a list of dictionaries so that they all have the same corresponding items in each dictionary.
For example, this is what I originally have in my list of dictionaries:
[{'name': 'clock'}, {'name': 'hours'}, {'name': 'nosotros'},
{'name': 'pinkfloyd'}, {'name': 'time'}, {'name': 'alarm clock', 'accuracy': 0.9196},
{'name': 'analogue', 'accuracy': 0.96998}, {'name': 'clock', 'accuracy': 0.99748}]
What I would like is to only have dictionaries with the corresponding 'name' but all instances of 'accuracy' removed. Basically, I want the following returned:
[{'name': 'clock'}, {'name': 'hours'}, {'name': 'nosotros'},
{'name': 'pinkfloyd'}, {'name': 'time'}, {'name': 'alarm clock'},
{'name': 'analogue'}, {'name': 'clock'}]
Please help guide me on how to do this!
Using a list comprehension:
dl = [{'name': 'clock'}, {'name': 'hours'}, {'name': 'nosotros'},
{'name': 'pinkfloyd'}, {'name': 'time'}, {'name': 'alarm clock', 'accuracy': 0.9196},
{'name': 'analogue', 'accuracy': 0.96998}, {'name': 'clock', 'accuracy': 0.99748}]
nl = [{'name': x['name']} for x in dl]
print(nl)
If you want to do this in a general way, you can take the intersection of the keys your dictionaries and then build a new list based on those keys:
list_o_dicts = [
{'name': 'clock'}, {'name': 'hours'}, {'name': 'nosotros'},
{'name': 'pinkfloyd'}, {'name': 'time'}, {'name': 'alarm clock', 'accuracy': 0.9196},
{'name': 'analogue', 'accuracy': 0.96998}, {'name': 'clock', 'accuracy': 0.99748}
]
common_keys = set.intersection(*map(set, list_o_dicts)) # just {'name'}
output = [{k:d[k] for k in common_keys} for d in list_o_dicts]
output:
[{'name': 'clock'},
{'name': 'hours'},
{'name': 'nosotros'},
{'name': 'pinkfloyd'},
{'name': 'time'},
{'name': 'alarm clock'},
{'name': 'analogue'},
{'name': 'clock'}]
If you had more than one common key this still works:
list_o_dicts = [
{'name': 'alarm clock', 'accuracy': 0.9196},
{'name': 'analogue', 'accuracy': 0.96998},
{'name': 'clock', 'accuracy': 0.99748}
]
common_keys = set.intersection(*map(set, list_o_dicts)) # {'accuracy', 'name'}
[{k:d[k] for k in common_keys} for d in list_o_dicts]
out:
[{'accuracy': 0.9196, 'name': 'alarm clock'},
{'accuracy': 0.96998, 'name': 'analogue'},
{'accuracy': 0.99748, 'name': 'clock'}]
in_list = [{'name': 'clock'}, {'name': 'hours'}, {'name': 'nosotros'},
{'name': 'pinkfloyd'}, {'name': 'time'}, {'name': 'alarm clock', 'accuracy': 0.9196},
{'name': 'analogue', 'accuracy': 0.96998}, {'name': 'clock', 'accuracy': 0.99748}]
new_list = [{k: v for k,v in ele.items() if k == 'name'} for ele in in_list]
print(new_list)
Output:
[{'name': 'clock'}, {'name': 'hours'}, {'name': 'nosotros'}, {'name': 'pinkfloyd'}, {'name': 'time'}, {'name': 'alarm clock'}, {'name': 'analogue'}, {'name': 'clock'}]
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.