[英]Associate multiple key/values to a defaultdict(list)
我有帶有記錄列表的json_data對象。 我需要列表中的所有“ id”,並且我想以某種方式將“ room”和“ name”鍵中的值關聯到ID列表。 之所以需要列表中的所有ID,是因為Im正在使用將ID作為批量處理列表的API。 我還需要將“名稱”和“房間”鍵中的值關聯到ID列表。 我能夠使用defaultdict(list)將“ room”關聯到列表,但不確定如何也將“ name”鍵的值關聯。 我應該怎么做?
json_data = {
"records": [
{
"id": 123,
"name": "John",
"room": "32B"
},
{
"id": 456,
"name": "Mary",
"room": "32B"
},
{
"id": 789,
"name": "Gary",
"room": "16F"
}]
}
data_list = json_data['records']
my_default_dict = defaultdict(list)
for data in data_list:
my_default_dict[data['room']].append(data['id'])
# This gives {'32B': [123, 456], '16F': [789]}
為什么不將您的數據轉換為ID映射? 然后,您可以從地圖中提取ID列表作為鍵。
records = json_data['records']
# Warning! This destructively iterates over json_data.
json_map = dict(zip((d.pop('id') for d in records), records))
json_map
# {123: {'name': 'John', 'room': '32B'},
# 456: {'name': 'Mary', 'room': '32B'},
# 789: {'name': 'Gary', 'room': '16F'}}
id_list = list(json_map)
# [123, 456, 789]
您可以按'room'
對記錄進行分組。
records = json_data['records']
new_records = defaultdict(list)
for record in records:
new_records[record['room']].append(record)
然后,您可以獲得'id'
的列表。
ids_for_32b = [item['id'] for item in new_records['32B']]
print(ids_for_32b)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.