
[英]How do I extract a dictionary from a list which only has that dictionary in it?
[英]How do I extract items which are in a list from python dictionary
我对 python 很陌生,我正在努力解决这个特定的问题。
我有以下脚本:
landmask_regions =
'Africa': ['mask_M01.map', 'mask_M02.map', 'mask_M03.map', \
'mask_M05.map', 'mask_M06.map', 'mask_M07.map', 'mask_M08.map', \
'mask_M09.map'], \
'Asia': ['mask_M04.map', 'mask_M05.map', 'mask_M10.map', 'mask_M11.map', \
'mask_M12.map', 'mask_M13.map', 'mask_M14.map', 'mask_M15.map', \
'mask_M16.map', 'mask_M17.map', 'mask_M18.map', 'mask_M19.map', \
'mask_M20.map', 'mask_M21.map', 'mask_M22.map', 'mask_M23.map'], \
'Europe': ['mask_M26.map', 'mask_M28.map', 'mask_M32.map', 'mask_M33.map', \
'mask_M34.map'], \
'N-America': ['mask_M25.map', 'mask_M35.map', 'mask_M36.map', 'mask_M37.map', \
'mask_M38.map', 'mask_M39.map', 'mask_M40.map', 'mask_M41.map', \
'mask_M42.map', 'mask_M43.map', 'mask_M44.map', 'mask_M45.map', 'mask_M46.map'], \
'Australia': ['mask_M47.map', 'mask_M48.map', 'mask_M49.map'], \
'S-America': ['mask_M24.map', 'mask_M50.map', 'mask_M51.map', \
'mask_M52.map', 'mask_M53.map']}
所以这个脚本是一个被划分成大洲的字典,对于每个大洲,它包括某些地区的地图。 现在我希望能够在这些场合阅读这些地图;
我应该如何安排一个能够完成所有这些的脚本? 我有点坚持这一点。
只需从用户那里获取输入,然后决定要做什么。
例如,您可以接受:
whole_world
将选择所有大陆的所有地图,Africa
、 Asia
、 Europe
、.map
结尾。所以,在 Python 中,这看起来像:
choice = input('which maps would you like to read?')
if choice == 'whole_world':
maps = sum(landmask_regions.values(), [])
elif choice in landmask_regions:
maps = landmask_regions[choice]
elif choice.endswith('.map'):
maps = [choice]
#code to read map and do whatever...
因此,当进入whole_world
时, maps
列表包含所有地图的名称:
['mask_M01.map', 'mask_M02.map', 'mask_M03.map', 'mask_M05.map', 'mask_M06.map', 'mask_M07.map', 'mask_M08.map', 'mask_M09.map', 'mask_M04.map', 'mask_M05.map', 'mask_M10.map', 'mask_M11.map', 'mask_M12.map', 'mask_M13.map', 'mask_M14.map', 'mask_M15.map', 'mask_M16.map', 'mask_M17.map', 'mask_M18.map', 'mask_M19.map', 'mask_M20.map', 'mask_M21.map', 'mask_M22.map', 'mask_M23.map', 'mask_M26.map', 'mask_M28.map', 'mask_M32.map', 'mask_M33.map', 'mask_M34.map', 'mask_M25.map', 'mask_M35.map', 'mask_M36.map', 'mask_M37.map', 'mask_M38.map', 'mask_M39.map', 'mask_M40.map', 'mask_M41.map', 'mask_M42.map', 'mask_M43.map', 'mask_M44.map', 'mask_M45.map', 'mask_M46.map', 'mask_M47.map', 'mask_M48.map', 'mask_M49.map', 'mask_M24.map', 'mask_M50.map', 'mask_M51.map', 'mask_M52.map', 'mask_M53.map']
当输入像Africa
这样的大陆时, maps
列表仅包含来自该大陆的地图:
['mask_M01.map', 'mask_M02.map', 'mask_M03.map', 'mask_M05.map', 'mask_M06.map', 'mask_M07.map', 'mask_M08.map', 'mask_M09.map']
当输入特定地图时, maps
列表仅包含该地图:
['mask_M01.map']
似乎您希望方法可以相互调用以完成您概述的每项任务。 也就是说,拿你的清单:
让我们从下往上做,因为这样工作会更容易:
def read_map(mapp):
"""reads a .map file (arg is not map because map is a keyword)"""
<map reading code>
def read_one_continent(continent, region):
"""Reads all maps for a given region"""
print("Reading " + continent)
for mapp in region:
read_map(mapp)
def read_world(world):
"""reads all of the maps in the world"""
for continent, maps in world:
read_one_continent(continent, maps)
这样,您就有了一个读取单个地图的函数,一个读取一组地图的函数(例如一个大陆的地图列表),然后是整个地图的函数! 您也可以将它们放入一个大函数中,但这可能更具可读性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.