这个问题毫无疑问之前已被问过,但我不完全确定如何搜索它(因为我不知道它叫什么)。所以请提前道歉。
唉,我的问题是我有大量的物品
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] }
感谢。
答案 0 :(得分:3)
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)}
答案 1 :(得分:1)
假设parts['thing']
是一个可以迭代的有序序列,您可以使用map
在subParts[0].get
的每个元素上调用parts['thing']
,以便迭代每个M
for M in map(subParts[0].get, parts['thing']):
...
1}}对象可以这样做:
itertools.imap
请注意,这将在python 2中返回一个列表,因此最好使用stuff = {i:[M.getItem1(),
M.getItem2(),
M.getItem3(),
M.getItem4()]
for i,M in enumerate(map(subParts[0].get, parts['thing']))}
。
要把它理解为dict理解你会这么做:
$(document).ready(function() {
$("div.jsonInfo").hide(); // it's obvious
$("button.showJSON").click(function() { // on click...
$("div.jsonInfo")
.hide() // ...hide all other previus opened elements...
.eq($(this).index('.showJSON')) // ... select right one by index of clicked .showJSON element...
.toggle(); // and show/hide it
});
});