【发布时间】:2017-08-31 19:48:50
【问题描述】:
我有一个 Person 类对象数组,如下所示,thisRate 首先设置为 None:
class Person(object):
def __init__(self, id, name):
self.id = id
self.name = name
self.thisRate= None
我将大约 21K Person 对象加载到一个数组中,name 未排序。
然后我从包含thisRate 数据的文件中的数据加载了另一个数组,其中大约 13K,name 也没有排序:
person_data = []
# read from file
row['name'] = 'Peter'
row['thisRate'] = '0.12334'
person_data.append(row)
现在有了这两组数组,当name在它们之间匹配时,我会将thisRate从person_data分配到Person.thisRate。
我正在做的是一个循环是这样的:
for person in persons:
data = None
try:
data = next(personData for personData in person_data
if personData['name'] == person.name)
except StopIteration:
print("No rate for this person: {}".format(person.name))
if data:
person.thisRate = float( data['thisRate'] )
这个循环
data = next(personData for personData in person_data
if personData['name'] == person.name)
运行良好,在我的机器上使用 Python 2.7.13 使用了 21 秒。
我的问题是,有没有更快或更好的方法来用我拥有的 2 个数组实现相同的目标?
【问题讨论】:
-
当你说数组时,你是指列表吗?
-
是列表,已在帖子中编辑。
标签: python python-2.7 for-loop