搜索列表的更好方法?任何建議表示讚賞:Python列表搜索
for key in nodelist.keys():
if len(nodelist[key]) > 0:
if key == "sample_node":
print key + ":"
print nodelist[key]
搜索列表的更好方法?任何建議表示讚賞:Python列表搜索
for key in nodelist.keys():
if len(nodelist[key]) > 0:
if key == "sample_node":
print key + ":"
print nodelist[key]
key = "sample_node"
if key in nodelist:
print ''.join([key, ":", nodelist[key]])
'if len()> 0'部分缺失... – EOL 2011-12-25 04:48:15
我把它當作他的天真方法來處理「如果字典中的這個項目被設置了」。 – Interrobang 2011-12-25 04:49:26
問題中的測試意味着「如果該值具有非零長度」,取而代之。例如,'nodelist = {「sample_node」:[]}'在原始問題中不會打印任何內容,但會在答案中打印出某些內容。 – EOL 2011-12-25 04:53:17
這是簡單的寫這個代碼:
key = "sample_node"
if key in nodelist: # loop not needed, and .keys() not needed
value = nodelist[key]
if value: # len() not needed
print key + ":"
print value
...和downvote的原因是...? – EOL 2011-12-25 04:53:47
您可能想要修復您的代碼格式。 (在第一行有一個從未關閉的報價。) – FakeRainBrigand 2011-12-25 04:56:52
@FakeRainBrigand嘿人,只是編輯它不使用downvote;) – Efazati 2011-12-25 05:03:35
試試這個:
[k+':'+str(v) for k,v in nodelist.items() if k == 'sample_node' and v]
如果你只需要打印結果:
for s in (k+':'+str(v) for k,v in nodelist.items() if k == 'sample_node' and v):
print s
如果nodelist
類型是dict
:
>>> key = 'sample_node'
>>> if nodelist.get(key):
... print key+':'+str(nodelist[key])
filter(lambda x: nodeList[x], nodeList)
你到底想幹什麼?用英文描述。準確**。如果您認爲這將有所幫助,請舉例說明預期的投入和產出。 – 2011-12-25 04:46:11
這不是「搜索」。這是一個「過濾器」。此外,'nodeList'不可能是一個列表,它必須是一個字典,這是有道理的。 – 2011-12-25 16:44:37