提取Google TextSearch API餐厅数据生成的列表出现重复元组如何解决?
问题原因
你的代码多了一层不必要的内层循环for key, value in container.items(),这层循环会遍历单个餐厅信息字典的所有键值对,每遍历一个键,就会向response_data中插入一次完全相同的餐厅元组,所以最终元组的重复次数等于单个餐厅字典的键的数量。
修复方案
直接去掉内层循环,遍历每个餐厅容器后直接提取字段存入列表即可,参考代码如下:
response_data = [] for container in l: item = ( container.get('name'), container.get('formatted_address'), container.get('opening_hours'), container.get('price_level'), container.get('rating') ) response_data.append(item)
如果想要更简洁的写法,也可以用列表推导式实现:
response_data = [ ( c.get('name'), c.get('formatted_address'), c.get('opening_hours'), c.get('price_level'), c.get('rating') ) for c in l ]
补充说明
- 原代码中用
extend([(...)])也可以实现新增单个元组的效果,但更适合新增单个元素的方法是append(),语义更清晰,也不需要额外把元组包成列表。 dict.get()方法在键不存在时会返回None,符合缺失字段留空的需求,不需要修改。
内容的提问来源于stack exchange,提问作者DJ-coding
相关产品推荐
相关产品推荐

