2011-12-25 17 views
-1

リストを検索するには?任意の提案を高く評価:Pythonリスト検索

for key in nodelist.keys(): 
    if len(nodelist[key]) > 0: 
     if key == "sample_node": 
      print key + ":" 
      print nodelist[key] 
+5

あなたが本当にやろうとしていますか?それを英語で説明してください。 **正確**。予想される入力と出力の例を挙げてください。 –

+0

これは「検索」ではありません。これは「フィルタ」です。また、 'nodeList'はおそらくリストではありません。それが意味をなさせるためには辞書でなければなりません。 –

答えて

2
key = "sample_node" 
if key in nodelist: 
    print ''.join([key, ":", nodelist[key]]) 
+0

'if len()> 0'部分がありません... – EOL

+1

私は、"辞書のこの項目が設定されているかどうか "という彼の素朴なアプローチとしてこれを採用しました。 – Interrobang

+2

質問のテストは、「値に長さがゼロでない場合」を意味します。例えば、 'nodelist = {" sample_node ":[]}'は元の質問には何も表示しませんが、答えに何かを表示します。 – EOL

4

このコードを書くために簡単です:

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 
+0

...とdownvoteの理由は...ですか? – EOL

+0

コードの書式を修正することができます。 – FakeRainBrigand

+2

@FakeRainBrigandちょっと男、それを編集しないでくださいdownvote;) – Efazati

1

はこのお試しください:

[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 
+0

+1行;;) – Efazati

+2

'nodelist'が辞書であると仮定すると(' .items() 'を使って)、あなたはforループ:['k = 'sample_node'; v = nodelist.get(k); v:print "%s:\ n%s"%(k、v) '](http://stackoverflow.com/a/8628297/4279) – jfs

2

nodelistの種類がdictの場合:

>>> key = 'sample_node' 
>>> if nodelist.get(key): 
...  print key+':'+str(nodelist[key]) 
1
filter(lambda x: nodeList[x], nodeList)