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 回答