【发布时间】:2016-01-27 09:35:45
【问题描述】:
我有一个从 .xml 文件构建的字典列表:
list_1=[{'lat': '00.6849879', 'phone': '+3002201600', 'amenity': 'restaurant', 'lon': '00.2855850', 'name': 'Telegraf'},{'lat': '00.6850230', 'addr:housenumber': '6', 'lon': '00.2844493', 'addr:city': 'XXX', 'addr:street': 'YYY.'},{'lat': '00.6860304', 'crossing': 'traffic_signals', 'lon': '00.2861978', 'highway': 'crossing'}]
我的目标是按以下顺序构建一个包含值(不是键)的文本文件: lat,lon,'addr:street','addr:housenumber','addr:city','amenity','crossing'等...
00.6849879,00.2855850, , , ,restaurant, ,'\n'00.6850230,00.2844493,YYY,6,XXX, , ,'\n'00.6860304,00.2861978, , , , ,traffic_signals,'\n'
如果值不存在,则应该有空格。
我尝试使用 for 循环进行循环:
for i in list_1:
line= i['lat'],i['lon']
print line
如果我添加在某些情况下不存在的值,则会出现问题:
for i in list_1:
line= i['lat'],i['lon'],i['phone']
print line
也尝试循环使用 map() 函数,但结果似乎不正确:
for i in list_1:
line=map(lambda x1,x2:x1+','+x2+'\n',i['lat'],i['lon'])
print line
也试过了:
for i in list_1:
for k,v in i.items():
if k=='addr:housenumber':
print v
这次我觉得可能要写的 if/else 条件太多了。
似乎解决方案就在附近。但无法弄清楚解决方案及其最佳方式。
【问题讨论】:
-
使用 dict.get 方法。
-
你看过
csv.DictWriter吗?
标签: python list python-2.7 dictionary