我在看一個功能性的方式來做到以下幾點:從字典功能轉換,列出
lst = []
for k, v in dict.iteritems():
lst.append(my_class(k, v))
return lst
一種近乎
imap(lambda (k,v): my_class(k, v), [...] dict [...])
將是理想的,但顯然是行不通的。
我該怎麼辦?
我在看一個功能性的方式來做到以下幾點:從字典功能轉換,列出
lst = []
for k, v in dict.iteritems():
lst.append(my_class(k, v))
return lst
一種近乎
imap(lambda (k,v): my_class(k, v), [...] dict [...])
將是理想的,但顯然是行不通的。
我該怎麼辦?
設d
是一個字典和f
可調用,並給予starmap
功能,第二個代碼可以寫爲:
from itertools import starmap
starmap(f, d.iteritems())
或匹配您的代碼:starmap(my_class, dict.iteritems())
而要真正回答你的問題,功能方式是:
return list(starmap(my_class, dict.iteritems))
from itertools import starmap
starmap(myclass, thedict.iteritems())
以上應該工作。
將不起作用,iteritems返回一對。 – 2012-02-23 12:05:35
@yi_H:爲什麼我改變它使用星圖。 – Marcin 2012-02-23 12:07:00
map(lambda x: my_class(*x), d.iteritems())
我會使用列表中理解語法
list = [ my_class(k,v) for k, v in dict.iteritems() ]
發電機也可以使用。
gen = (my_class(k,v) for k, v in dict.iteritems())
發電機不會創建/運行該函數my_class(K,V),直到它被重複。
這顯然不起作用? – Marcin 2012-02-23 12:00:20
@Marcin:我不明白應該怎麼做,而不是因爲我不斷收到異常。 – Sardathrion 2012-02-23 12:03:42
只需使用'dict.iteritems()' – 2012-02-23 12:07:58