Dictionarys结合了python

时间:2016-03-01 12:41:57

标签: python dictionary

我想结合2个字典。搜索了一下,但还没找到它。因为我不知道它是怎么称呼的。 但这是我得到的两个dictonary:

第1名:

Counter({'gag': 19, 'ccc': 15, 'cct': 15, 'ctg': 15, 'tcc': 13, 'aag': 13, 'atg': 12, 'cag': 12, 'gcc': 12, 'gaa': 11, 'gat': 11, 'aac': 10, 'gtg': 10, 'cca': 9, 'gac': 9, 'acc': 9, 'ggg': 9, 'agc': 8, 'cgc': 8, 'tct': 7, 'aaa': 7, 'ttc': 7, 'atc': 7, 'cac': 7, 'aca': 7, 'gct': 6, 'ccg': 6, 'ttg': 6, 'ggc': 6, 'tgc': 6, 'tca': 6, 'tac': 6, 'gca': 5, 'ctc': 5, 'ggt': 5, 'cat': 5, 'gtt': 5, 'cgt': 5, 'ttt': 4, 'tgt': 4, 'act': 4, 'aat': 4, 'tgg': 4, 'cga': 4, 'agt': 4, 'tat': 3, 'gga': 3, 'cgg': 3, 'cta': 3, 'agg': 3, 'caa': 3, 'ctt': 3, 'gtc': 3, 'aga': 3, 'acg': 2, 'gcg': 1, 'att': 1, 'tga': 1})

第2名:

{'Phe': ['ttt', 'ttc'], 'Stop': ['tag', 'tga', 'taa'], 'Pro': ['cct', 'ccc', 'cca', 'ccg'], 'Trp': ['tgg'], 'Met': ['atg'], 'Lys': ['aaa', 'aag'], 'His': ['cat', 'cac'], 'Asp': ['gat', 'gac'], 'Start': ['atg', 'ctg', 'ttg', 'gtg', 'att'], 'Thr': ['act', 'acc', 'aca', 'acg'], 'Tyr': ['tat', 'tac'], 'Glu': ['gaa', 'cag'], 'Asn': ['aat', 'aac'], 'Val': ['gtt', 'gtc', 'gta', 'gtg'], 'Ser': ['tct', 'tcc', 'tca', 'tcg', 'agt', 'agc'], 'Cys': ['tgt', 'tgc'], 'Ile': ['att', 'atc', 'ata'], 'Leu': ['tta', 'ttg', 'ctt', 'ctc', 'cta', 'ctg'], 'Gly': ['ggt', 'ggc', 'gga', 'ggg'], 'Gln': ['caa', 'cag'], 'Arg': ['cgt', 'cgc', 'cga', 'cgg', 'aga', 'agg'], 'Ala': ['gct', 'gcc', 'gca', 'gcg']}

现在我想计算每种氨基酸(含有phe,pro,trp等的dic 2)的含量。例如: Phe已经' ttt'和&#t; ctc'我想算一下第一节中有多少人。但我不知道怎么样,有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

您可以使用默认值0计算使用此行未找到的总和:

sums = {k: sum(counter.get(tv, 0) for tv in v) for k, v in dictionary.items()}

假设counter是第一个映射,dictionary是第二个映射。

答案 1 :(得分:1)

您可以为总和创建一个新词典:

total = {k: sum(number1.get(subk, 0) for subk in v) for k, v in number2.items()}

答案 2 :(得分:0)

如果我理解正确你正在寻找这样的东西。

def get_count(name):
    count = 0
    for item in number2[name]:
        count += number1.get(item) or 0
    return count

get_count('Phe')