0

我正在使用collections.defaultdict(list).

我的打印如下所示:

{ 'A': [{'UNP': 'P01899'}],
  'C': [{'PDB': '2VE6'}], 
  'B': [{'PDB': '2VE6'}, {'UNP': 'P01887'}], 
  'E': [{'PDB': '2VE6'}, {'UNP': 'P01887'}],
  'D': [{'UNP': 'P01899'}],
  'G': [{'UNP': 'P01899'}],
  'F': [{'PDB': '2VE6'}], 
  'I': [{'PDB': '2VE6'}],
  'H': [{'PDB': '2VE6'}, {'UNP': 'P01887'}],
  'K': [{'PDB': '2VE6'}, {'UNP': 'P01887'}],
  'J': [{'UNP': 'P01899'}], 
  'L': [{'PDB': '2VE6'}] }

我想要做的是使用一个子句 if 'UNP'do something, if only 'PDB'and no 'UNP'then do something different.

我对脚本很陌生。所以非常感谢任何帮助。谢谢

4

2 回答 2

1

一种方法是

>>> for key,val in my_dict.items():
...     keys = [v.keys()[0] for v in val]
...     if "UNP" in keys: print "UNP in",key
...     elif "PDB" in keys: print "PDB in",key
...
UNP in A
PDB in C
UNP in B
UNP in E
UNP in D
UNP in G
PDB in F
PDB in I
UNP in H
UNP in K
UNP in J
PDB in L
>>>
于 2012-09-30T21:24:26.130 回答
0

如果每个项目最多只能有 1 个“UNP”且最多只能有 1 个“PDB”,则应在开头使用 defaultdict(dict)。然后你可以做这样的插入:

mydict['A']['UNP'] = 'P01899'

并自动轻松地获得类似的数据结构

{ 'A': {'UNP': 'P01899'},
  'C': {'PDB': '2VE6'}, 
  'B': {'PDB': '2VE6', 'UNP': 'P01887'}, 
  'E': {'PDB': '2VE6', 'UNP': 'P01887'},
  'D': {'UNP': 'P01899'},
  'G': {'UNP': 'P01899'},
  'F': {'PDB': '2VE6'}, 
  'I': {'PDB': '2VE6'},
  'H': {'PDB': '2VE6', 'UNP': 'P01887'},
  'K': {'PDB': '2VE6', 'UNP': 'P01887'},
  'J': {'UNP': 'P01899'}, 
  'L': {'PDB': '2VE6'} }

那么你想要的就很简单了:

itemA = mydict['A']
if 'UNP' in itemA:
    # now we have 'UNP'
elif 'PDB' in itemA:
    # now we have PDB but not UNP
于 2012-09-30T22:54:23.897 回答