是否有一些简单的方法可以访问列表中的对象,而无需使用索引或遍历列表?
简而言之:我正在从文本文件中读取行,拆分行,并从信息中创建对象。我不知道文本文件中将包含哪些信息。因此,例如:
roomsfile.txt
0 \卧室\一间带特大号床的卧室。\朝东的一扇门。
1 \ kitchen \带钢和铬合金的现代厨房。\向西的门。
2 \ familyRoom \带电视和沙发的宽敞家庭房。\朝南的门。
一些Python代码:
class Rooms:
def __init__(self, roomNum, roomName, roomDesc, roomExits):
self.roomNum = roomNum
self.roomName = roomName
self.roomDesc = roomDesc
self.roomExits = roomExits
def getRoomNum(self):
return self.roomNum
def getRoomName(self):
return self.roomName
def getRoomDesc(self):
return self.roomDesc
def getRoomExits(self):
return self.roomExits
def roomSetup():
roomsfile = "roomsfile.txt"
infile = open(roomsfile, 'r')
rooms = []
for line in infile:
rooms.append(makeRooms(line))
infile.close()
return rooms
def makeRooms(infoStr):
roomNum, roomName, roomDesc, roomExits = infoStr.split("\")
return Rooms(roomNum, roomName, roomDesc, roomExits)
当我想知道卧室的出口是什么时,我必须使用以下类似的内容来遍历列表(其中“名词”被用户传递为“卧室”):
def printRoomExits(rooms, noun):
numRooms = len(rooms)
for n in range(numRooms):
checkRoom = rooms[n].getRoomName()
if checkRoom == noun:
print(rooms[n].getRoomExits())
else:
pass
这种方法有效,但是感觉好像我缺少一些更简单的方法……尤其是因为我有一个难题(例如本例中的“卧室”)……并且尤其是因为房间列表中可能包含成千上万个对象它。
我可以创建一个作业:
bedroom = makeRooms(0, bedroom, etc, etc)
然后执行:
bedroom.getRoomExits()
但同样,我不知道文本文件中将包含哪些信息,也不知道要进行哪些分配。 这个StackOverFlow答案反对“动态创建的变量”,并主张使用字典。我尝试了这种方法,但是找不到找到访问添加到字典中的命名对象的方法(以及信息)的方法。
总而言之:我是否缺少一些愚蠢的东西?
GCT1015
慕勒3428872
鸿蒙传说
相关分类