我试图弄清楚如何将两个对象“合并”在一起。我的目标是合并两个Album对象(下面的代码)。我需要能够合并tracks多个Album对象的参数(列表),只有当对象的“标题”参数相Album同时。
基本上,如果我有一个参数Album长度tracks为 1 的对象和另一个参数长度也是 1 的专辑对象tracks,那么新的或更新的单数Album对象需要有tracks一个长度为 2的参数。
我已经发布了我的代码来展示对象是如何定义的。
提前致谢!
编辑:由于tracks参数列表中的每个元素都是歌曲名称,我想保留相同的元素并将它们放在新的或更新的tracks参数中。我需要将每个对象的确切元素放入这个“新”对象中,而不是仅仅改变元素的数量。
class Album(object) :
def __init__(self, artist, title, tracks = None) :
tracks = []
self.artist = artist
self.title = title
self.tracks = tracks
def add_track(self, track) :
self.track = track
(self.tracks).append(track)
print "The track %s was added." % (track)
def __str__(self) :
if len(self.tracks) == 1 :
return …Run Code Online (Sandbox Code Playgroud) 我有这个代码块,它可以工作,但执行大约需要8秒.我知道它是第二个for循环,因为循环内部有一个循环.但是,我相信我需要两个循环,因为我需要交叉引用tracks列表.
有没有人知道让这个功能执行得更快的方法?我似乎无法看到另一种写作方式.
仅供参考:我使用的csv文件有5570行,这是该功能采用"while"的另一个原因.
提前致谢!
def load_library(filename) :
library = open(filename, 'rb')
reader = csv.reader(library, delimiter = '|')
tracks = set([])
albums = set([])
albums1 = set([])
#albums1 is the set of albums which have already been added to the albums list.
for row in reader :
artist, track, album, genre, year = row
track = Track(artist, track)
track.set_album(album)
tracks.add(track)
library = open(filename, 'rb')
reader = csv.reader(library, delimiter = '|')
for row in reader :
artist, …Run Code Online (Sandbox Code Playgroud)