剛剛寫了一些討厭的代碼,它在Python中迭代了dict
或list
。我有一種感覺,這不是最好的辦法。迭代Python中的字典或列表
的問題是,爲了遍歷一個字典,這是慣例:
for key in dict_object:
dict_object[key] = 1
但是,關鍵的修改對象的屬性,如果同樣的事情的清單上完成不起作用:
# Throws an error because the value of key is the property value, not
# the list index:
for key in list_object:
list_object[key] = 1
我解決這個問題的方法是寫這個討厭的代碼:
if isinstance(obj, dict):
for key in obj:
do_loop_contents(obj, key)
elif isinstance(obj, list):
for i in xrange(0, len(obj)):
do_loop_contents(obj, i)
def do_loop_contents(obj, key):
obj[key] = 1
是療法一個更好的方法來做到這一點?
謝謝!
只要發現你有一個答案非常類似地雷。唯一的區別是你使用'xrange()'(可以),但結果是相同或非常相似的。+1 – Tadeck
如果isinstance(obj,dict)else xrange(len(obj))'不應該返回obj? –
@tobias_k:很好! Python的範圍符合內聯編輯。 :^) – DSM