python - 按属性值排序对象列表,属性值的顺序在另一个列表中

标签 python python-3.x sorting

a = ['123b4', '234v5', 'lobf56']
b = [obj1, obj2, obj3] # where each obj is list of object which has attribute called 'serial' which matches serial numbers in list #a

其中obj1.serial为234v5,obj2.serial为lobf56,obj3.serial为123b4

tmplist=list()
for each in a:
    for obj in b:
        if each == obj.serial:
            tmplist.append(obj)

print(tmplist)

输出:[obj3, obj1, obj2]

我目前能够通过上述方式实现排序。但是有更好的方法吗?

最佳答案

list comprehension有帮助吗?

[obj for each in a for obj in b if each == obj.serial]

如果比较两者之间的时间,您的方法是:

1.6 µs ± 25.5 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

列表理解需要:

1.37 µs ± 18.2 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

因此,如果“更好的方法”是指效率。这绝对重要。

关于python - 按属性值排序对象列表,属性值的顺序在另一个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55545030/

相关文章:

python - 正确使用来自 tfds.load() 的 Cifar-10 数据集

python - 多索引 : Level values must be unique 上的 Pandas set_levels

python - 获取 <b> 标签中文本的下一个内容

python-3.x - Python 中文本 block 开头的全部大写的正则表达式

python - 如何在同一台计算机上安装常规 python(通过 Homebrew 软件)和 miniconda?

Python追加返回字典而不是列表

sorting - 你能把冒泡排序表述为一个幺半群或半群吗?

c - 对哈希表进行排序 Glib - qsort

algorithm - 通缉 : working Bose-Hibbard Sort implementation preferably in C-like language

python - SVM - 将字符串传递给 Python 中的 CountVectorizer 向量化每个字符?