在python中迭代字典列表而不重复?
我正在寻找有关如何迭代字典列表、重命名一些键/值对和删除其他键/值对的指导。我有执行必要转换的代码,但它创建了许多新字典的副本 背景如下: 我有一个名为“结果”的词典列表。列表中有3本词典。结果中的每个字典包含5个键/值对,如下所示在python中迭代字典列表而不重复?,python,list,dictionary,Python,List,Dictionary,我正在寻找有关如何迭代字典列表、重命名一些键/值对和删除其他键/值对的指导。我有执行必要转换的代码,但它创建了许多新字典的副本 背景如下: 我有一个名为“结果”的词典列表。列表中有3本词典。结果中的每个字典包含5个键/值对,如下所示 {'lat': 36.88773, 'site_description': blah blah, 'id': 2, 'long': -75.985534, 'site_name': 62nd street} 我正试图从列表中的每一本词典中创建一本新
{'lat': 36.88773,
'site_description': blah blah,
'id': 2,
'long': -75.985534,
'site_name': 62nd street}
我正试图从列表中的每一本词典中创建一本新词典。我要执行以下更改:
- 将“long”重命名为“lng”
- 将“站点描述”重命名为“信息框”
- 删除“id”
>>> black_list = {"id"}
>>> rename ={"long":"lng", "site_description":"infobox"}
>>> new_markers = []
>>> for dict in results:
for val in dict.items():
new_markers.append({rename.get(key, key) : val for key, val
in dict.items() if key not in black_list})
>>> print new_markers
谢谢你的建议
for dict in results:
for val in dict.items():
new_markers.append({ … dict comprehension … })
这里有两个循环,第二个循环迭代字典项,尽管在以后的字典理解中您会这样做。特别是因为您也在那里通过循环dict.items()
检索val
所以只要跳过这一个循环,你就可以开始了
for dict in results:
new_markers.append({rename.get(key, key) : val for key, val
in dict.items() if key not in black_list})
理解列表和dict是一种方法:
new_markers = [{rename[k] if k in rename else k: v for k, v in d.items() if k not in black_list} for d in results]
您可以尝试以下方法:
s = [{'lat': 36.88773, 'site_description': "blah blah", 'id': 2, 'long': -75.985534, 'site_name': "62nd street"}, {'lat': 36.88773, 'site_description': "blah blah", 'id': 4, 'long': -35.985534, 'site_name': "26nd street"}, {'lat': 36.88773, 'site_description': "blah blah", 'id': 2, 'long': -75.985534, 'site_name': "62nd street"}]
new_s = [{"lng" if a == "log" else 'infobox' if a == 'site_description' else a if a != "id" else "pass":b for a, b in i.items()} for i in s]
final_list = []
for i in new_s:
del i["pass"]
final_list.append(i)
输出:
[{'long': -75.985534, 'infobox': 'blah blah', 'site_name': '62nd street', 'lat': 36.88773}, {'long': -35.985534, 'infobox': 'blah blah', 'site_name': '26nd street', 'lat': 36.88773}, {'long': -75.985534, 'infobox': 'blah blah', 'site_name': '62nd street', 'lat': 36.88773}]
谢谢,我也会测试一下。谢谢你的快速回复!