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

2024-05-16 18:50:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本这样的大字典:

{'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

现在我需要能够保留键和值之间的映射,即使在提取所有值之后。有什么方法可以优雅地做到这一点吗

编辑:将“get prefix”替换为“string processing”,以反映问题的更广泛范围


Tags: 字符串dictaab大字典bdacaccaaaaccccaet122t154t096
1条回答
网友
1楼 · 发布于 2024-05-16 18:50:32

使用字典理解collections.Counter

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'}

相关问题 更多 >