这是我的数据。
data = [{'id': 1, 'name': 'The Musical Hop', 'city': 'San Francisco', 'state': 'CA'},
{'id': 2, 'name': 'The Dueling Pianos Bar', 'city': 'New York', 'state': 'NY'},
{'id': 3, 'name': 'Park Square Live Music & Coffee', 'city': 'San Francisco', 'state': 'CA'}]
我想找出 "城市 "的唯一值(这就是为什么我用了一个集合) 然后像这样返回。
cities = set([x.get("city") for x in data])
cities ´
{'New York', 'San Francisco'}
但是,我还想返回相应的状态,像这样。
[{"city": "New York", "state": "NY"}, {"city": "San Francisco", "state": "CA"}]
有什么方法可以做到这一点吗?
你可以使用dict-comprehension来完成任务。
out = list({x['city']:{'city':x['city'], 'state':x['state']} for x in data}.values())
print(out)
Prints:
[{'city': 'San Francisco', 'state': 'CA'}, {'city': 'New York', 'state': 'NY'}]
你可以使用dict -comprehension来创建一个城市>州的映射,然后迭代它来创建你想要的列表。
city_to_state = {x["city"]: x["state"] for x in data}
result = [{"city":k, "state":v} for k,v in city_to_state.items()]