我有一个使用defaultdict生成的字典
{"GGGAAATTTCCCTTTGGGAAACGG": ["9/1", "9/2", "1/1.1", "9/2.1"],
"GGGAAATTTCCCTTTGGGAAAGCC": ["9/2", "9/2.1"],
"GGGAAATTTCCCTTTGGGAAAGGG": ["1/1", "1/2", "9/1", "1/1.1"]}其中一个企业在其价值方面属于另一个企业的子集:
"GGGAAATTTCCCTTTGGGAAAGCC": ["9/2", "9/2.1"]的子集
"GGGAAATTTCCCTTTGGGAAACGG": ["9/1", "9/2", "1/1.1", "9/2.1"]我将如何折叠字典,以便最终得到这些结果中的任何一个?
{"GGGAAATTTCCCTTTGGGAAACGG": ["9/1", "9/2", "1/1.1", "9/2.1"],
"GGGAAATTTCCCTTTGGGAAAGGG": ["1/1", "1/2", "9/1", "1/1.1"]}或
{["GGGAAATTTCCCTTTGGGAAACGG", "GGGAAATTTCCCTTTGGGAAAGCC"]:
["9/1", "9/2", "1/1.1", "9/2.1"],
"GGGAAATTTCCCTTTGGGAAAGGG":
["1/1", "1/2", "9/1", "1/1.1"]}编辑:
因此,按照我的要求,这是我的尝试:
#dd is my defaultdict
for keys, values in dd.iteritems():
if all(for item in values:
if item in dd.items():
return True
else:
return False):
print keys发布于 2015-07-22 11:41:31
你可以试试这个
mydict = {"GGGAAATTTCCCTTTGGGAAACGG": ["9/1", "9/2", "1/1.1", "9/2.1"],
"GGGAAATTTCCCTTTGGGAAAGCC": ["9/2", "9/2.1"],
"GGGAAATTTCCCTTTGGGAAAGGG": ["1/1", "1/2", "9/1", "1/1.1"]}
>>>dict([i for i in mydict.items() if not any(set(j).issuperset(set(i[1])) and j!=i[1] for j in mydict.values())])
{'GGGAAATTTCCCTTTGGGAAACGG': ['9/1', '9/2', '1/1.1', '9/2.1'],
'GGGAAATTTCCCTTTGGGAAAGGG': ['1/1', '1/2', '9/1', '1/1.1']}或者简单的
for i in mydict.items():
for j in mydict.values():
if i[1]!=j:
if set(j).issuperset(set(i[1])):
mydict.pop(i[0])
>>>mydict
{'GGGAAATTTCCCTTTGGGAAACGG': ['9/1', '9/2', '1/1.1', '9/2.1'],
'GGGAAATTTCCCTTTGGGAAAGGG': ['1/1', '1/2', '9/1', '1/1.1']}https://stackoverflow.com/questions/31561006
复制相似问题