0

私は辞書を持っていますが、

dct = {'slab1': {'name':'myn1', 'age':20}, 'slab2':{'name':'myn2','age':200}}
lst = {'/store/dir1/dir_slab1/tindy', '/store/dir2/dirslab2_fine/tunka','/store/dir1/dirslab3/lunku'}

リスト要素の辞書のキーである「slab1」、「slab2」を検索するにはどうすればよいですか? 一致する場合は、一致した要素と「年齢」を辞書から出力したいと思います。したがって、上記の例では、次のようなものを取得する必要があります。

  '/store/dir1/dir_slab1/tindy', 20
  '/store/dir2/dirslab2_fine/tunka', 200

提案をありがとう

4

1 に答える 1

0
>>> dct = {'slab1': {'name':'myn1', 'age':20}, 'slab2':{'name':'myn2','age':200}}
>>> lst = {'/store/dir1/dir_slab1/tindy', '/store/dir2/dirslab2_fine/tunka','/store/dir1/dirslab3/lunku'}
>>> for item in lst:
...    for pattern in dct:
...       if pattern in item:
...           print "%s, %s" % (item, dct[pattern]["age"])
... 
/store/dir1/dir_slab1/tindy, 20
/store/dir2/dirslab2_fine/tunka, 200

リスト内包表記を使用してペアを取得することもできます。

>>> [(item, dct[pattern]["age"]) for item in lst for pattern in dct if pattern in item]
[('/store/dir1/dir_slab1/tindy', 20), ('/store/dir2/dirslab2_fine/tunka', 200)]

PS質問にはいくつかの誤解があります(たとえば、list変数はリストではありません)が、解決策は次のようになります。

于 2012-09-04T17:04:01.057 に答える