如何从包含字典的嵌套列表生成指定格式的Python字典?
Solution to Convert List of Dicts to Unique Keyed Dictionary
To achieve your desired output, we'll iterate over each entry in your original list, create a modified version of each entry (with first_name and surname set to "anonymous"), generate a unique string key for each entry, and build the new dictionary from these key-value pairs.
Using UUIDs for Unique Keys (Recommended)
We'll use Python's uuid module to generate globally unique random keys—this ensures no duplicates even if your original list has entries with the same id. Here's the full code:
import uuid dict_1 = [ {'id': '0eb7df70-f319-4562-ab2a-9e641e978b3b', 'first_name': 'Rahx', 'surname': 'Smith ', 'devices': {'os': 'Apple iPhone', 'mac_address': 'f4:af:e7:b7:ab:22', 'manufacturer': 'Apple'}, 'lat': 54.33166199876629, 'lng': -6.277842272724769, 'seenTime': 1582814754000}, {'id': 'a0bb8d38-0d27-4d7f-acc0-1e850a706b6c', 'first_name': 'Lucy', 'surname': 'Pye', 'devices': {'os': 'Apple iPhone', 'mac_address': 'f8:87:f1:72:4c:4d', 'manufacturer': 'Apple'}, 'lat': 54.33166199876629, 'lng': -6.277842272724769, 'seenTime': 1582814754000}, {'id': '0eb7df70-f319-4562-ab2a-9e641e978b3b', 'first_name': 'xyx', 'surname': 'dcsdd', 'devices': {'os': 'NOKIA Phone', 'mac_address': '78:28:ca:a8:56:b9', 'manufacturer': 'NOKIA'}, 'lat': 54.33166199876629, 'lng': -6.277842272724769, 'seenTime': 1582814754000}, {'id': 'a0bb8d38-0d27-4d7f-acc0-1e850a706b6c', 'first_name': 'ddwdw', 'surname': 'sdsds', 'devices': {'os': 'MI Phone', 'mac_address': 'dc:08:0f:3f:57:0c', 'manufacturer': 'MI'}, 'lat': 54.33218267030654, 'lng': -6.27796001203896, 'seenTime': 1582814693000} ] result_dict = {} for entry in dict_1: # Create modified entry with anonymous names modified_entry = { "first_name": "anonymous", "surname": "anonymous", "lat": entry["lat"], "lng": entry["lng"], "devices": entry["devices"].copy(), # Shallow copy to avoid altering original data "seenTime": entry["seenTime"] } # Generate unique UUID key unique_key = str(uuid.uuid4()) # Add to result dictionary result_dict[unique_key] = modified_entry # Optional: Print formatted result to verify import json print(json.dumps(result_dict, indent=2))
Key Notes:
- Unique Keys:
uuid.uuid4()generates random, unique identifiers that are perfect for this use case. - Preserved Data: All original
lat,lng,devices, andseenTimevalues are retained. - Nested Dict Copy: We use
.copy()on thedevicesdict to prevent accidental changes to the originaldict_1entries. If yourdevicesdict has deeper nested structures, usecopy.deepcopy()(import thecopymodule first).
Alternative: Index-Based Keys
If you don't need globally unique keys and prefer simpler identifiers, use index-based keys instead:
result_dict = {} for idx, entry in enumerate(dict_1): modified_entry = { "first_name": "anonymous", "surname": "anonymous", "lat": entry["lat"], "lng": entry["lng"], "devices": entry["devices"].copy(), "seenTime": entry["seenTime"] } unique_key = f"entry_{idx}" result_dict[unique_key] = modified_entry
内容的提问来源于stack exchange,提问作者anakin skywalker
相关产品推荐
相关产品推荐

