在python中从一个对象返回多个实例

2024-04-27 00:10:46 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题以前肯定有人问过,但我不完全确定如何寻找它(因为我不知道它叫什么)。所以提前道歉。你知道吗

唉,我的问题是我有很多东西

for i in range(1000):
    M = subParts[0].get(parts['thing'][i])

每个M都是一个对象,包含了很多关于这个模型的信息,现在我的工作是调用这个对象上的四个单独的函数,这样这些函数就可以返回四个简单的数字:

for i in range(1000):
    M = subParts[0].get(parts['thing'][i])
    M.getItem1()
    M.getItem2()
    M.getItem3()
    M.getItem4()

每一个都返回一个数字,例如

4.5
5.7
3.7
2.9

因此,我的问题是,什么是一个有效的方法来做到这一点?上面的方法虽然很难看但很有效,但必须有更有效的方法。在此基础上,我只想把所有的东西都储存在字典里

myDict = { 0 : [4.5,5.7,3.7,2.9], ... , 999 : [2.5,3.7,5.7,2.9] }

谢谢。你知道吗


Tags: 对象方法函数in模型信息forget
2条回答

假设parts['thing']是一个可以迭代的有序序列,您可以使用map调用parts['thing']的每个元素上的subParts[0].get,因此可以这样迭代每个M对象:

for M in map(subParts[0].get, parts['thing']):
    ...

注意,这将在python2中返回一个列表,因此最好使用itertools.imap。你知道吗

把它放到听写理解中,你只需要做:

stuff = {i:[M.getItem1(),
            M.getItem2(),
            M.getItem3(),
            M.getItem4()]
         for i,M in enumerate(map(subParts[0].get, parts['thing']))}
def getdata(m):
    return [m.getItem1(), m.getItem2(), m.getItem3(), m.getItem4()]

myDict = {i: getdata(subParts[0].get(parts['thing'][i])) for i in range(1000)}

相关问题 更多 >