インデックスを使用したり、リストを反復処理したりせずに、リスト内のオブジェクトにアクセスする簡単な方法はありますか?
簡単に言うと、テキスト ファイルから行単位で読み取り、行を分割し、情報からオブジェクトを作成しています。テキストファイルにどのような情報が含まれているかわかりません。たとえば、次のようになります。
部屋ファイル.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 の回答は、「動的に作成された変数」に反対し、辞書の使用を支持しています。このアプローチを試みましたが、辞書に追加した名前付きオブジェクトのメソッド (したがって情報) にアクセスする方法が見つかりませんでした。
要するに、私は何かばかげたことを見逃していますか?
前もって感謝します!そして、本の長さの投稿で申し訳ありません-十分な詳細を提供したかった.
クリス