Python 在字典中分离键值,并在处理这些值后重新创建dict

Python 在字典中分离键值,并在处理这些值后重新创建dict,python,dictionary,Python,Dictionary,我有一本这样的大字典: {'T096': ['AABBAACACCAADBAACCAAAACACCBBAE'], 'T122': ['AACAABBBCABBDAACABCACABBAAACCCCAE'], 'T154': ['ABAABDBAAACCCAE'], 'T169': ['CCDBAACCAAAACCAE'], 'T176': ['BDACACCAAAACCCCAE'], 'T183': ['BBAACAACCBDAACBACCCCAAAACCAE'], 'T197': ['AABB

我有一本这样的大字典:

{'T096': ['AABBAACACCAADBAACCAAAACACCBBAE'],
'T122': ['AACAABBBCABBDAACABCACABBAAACCCCAE'],
'T154': ['ABAABDBAAACCCAE'],
'T169': ['CCDBAACCAAAACCAE'],
'T176': ['BDACACCAAAACCCCAE'],
'T183': ['BBAACAACCBDAACBACCCCAAAACCAE'],
'T197': ['AABBAACABABACABAAABDBAAACCAE'],
'T178': ['CACDBAAACCCAE'],
'T067': ['BACAACCDBAABACCACCAAABCCACACCCCAE']}
我使用一个库,它接受字符串列表并进行一些处理(在本例中生成公共前缀)。 因此,我从上面的dict中提取所有值。 处理完成后(在本例中,我得到前缀),我感兴趣的是将那些处理过的字符串(这里是公共前缀)分配回dict中的键。 例如,类似这样的事情:

{'T096': ['AAB'],
'T197': ['AAB']}  # in the rest, there are no common prefixes, so ignored, or set to None
现在,我需要能够保留键和值之间的映射,即使在提取所有值之后。有什么方法可以优雅地做到这一点吗


编辑:将“获取前缀”替换为“字符串处理”,以反映问题的更广泛范围

将词典理解与
集合一起使用。计数器

from collections import Counter

d = {'T096': ['AABBAACACCAADBAACCAAAACACCBBAE'],
'T122': ['AACAABBBCABBDAACABCACABBAAACCCCAE'],
'T154': ['ABAABDBAAACCCAE'],
'T169': ['CCDBAACCAAAACCAE'],
'T176': ['BDACACCAAAACCCCAE'],
'T183': ['BBAACAACCBDAACBACCCCAAAACCAE'],
'T197': ['AABBAACABABACABAAABDBAAACCAE'],
'T178': ['CACDBAAACCCAE'],
'T067': ['BACAACCDBAABACCACCAAABCCACACCCCAE']}

c = Counter(x[0][:3] for x in d.values())
print({k: v[0][:3] for k, v in d.items() if c[v[0][:3]] > 1})

# {'T096': 'AAB', 'T197': 'AAB'}

字典值之间的公共前缀?那么,您正在查找具有相同前缀的字典中的键?@DanielMesejo是的,字典值之间的公共前缀(稍后会进行更多处理,这是第一步,因此不能使用下面的Austin答案)@pygo我需要跟踪键:prefix(在本例中,我只有一个通用前缀,可能有很多,因此我应该能够跟踪所有前缀)我想知道是否使用
collections.OrderdDict
来存储并在以后使用键值来组合帮助,因为列表顺序在两个列表之间保持?很抱歉让您误解了这个解决方案,它不仅仅是一个前缀,我使用字符串列表进行了一系列处理(在本例中,它是查找前缀)所以我不能使用
集合。计数器
。编辑了原始帖子。@okkhoy,仍然很宽泛!这些操作是什么?