小编Eva*_*per的帖子

在python中“合并”两个对象

我试图弄清楚如何将两个对象“合并”在一起。我的目标是合并两个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)

python merge arguments class object

4
推荐指数
1
解决办法
7117
查看次数

Python for loop效率

我有这个代码块,它可以工作,但执行大约需要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)

python csv performance loops for-loop

0
推荐指数
1
解决办法
150
查看次数

标签 统计

python ×2

arguments ×1

class ×1

csv ×1

for-loop ×1

loops ×1

merge ×1

object ×1

performance ×1