字典理解的唯一值,return 字典而不是字符串

Unique values of Dictionary comprehension, return dictionary instread of string

这是我的数据:

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'}]

我想找出 "city" 和 return 的唯一值(这就是我使用集合的原因),如下所示:

cities = set([x.get("city") for x in data])
cities ´

{'New York', 'San Francisco'}

不过,我也想return对应的状态,像这样:

[{"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)

打印:

[{'city': 'San Francisco', 'state': 'CA'}, {'city': 'New York', 'state': 'NY'}]

您可以使用 dict-comprehension 创建 city->state 映射,然后迭代它以创建您想要的列表:

city_to_state = {x["city"]: x["state"] for x in data}
result = [{"city":k, "state":v} for k,v in city_to_state.items()]