我对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']}
因此,该脚本是一个字典,分为各大洲,并且每个大洲都包含某些地区的地图。 现在,我希望能够在这些情况下阅读这些地图;
我应该如何安排一个能够完成所有这些工作的脚本? 我对此有些困惑。
答案 0 :(得分:1)
只需从用户那里获取输入,然后决定要做什么。
例如,您可以接受:
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']
答案 1 :(得分:0)
似乎您会需要互相调用的方法来完成您概述的每个任务。就是了,列出您的列表:
让我们从下至上进行操作,因为这样做会更容易:
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)
这样,您就具有读取单个地图的功能,读取一组地图的功能(例如,大洲的地图列表),然后是整个功能!您也可以将它们放在一个大函数中,但这可能更具可读性。