簡體   English   中英

在字典中分離鍵值,並在處理值后重新創建字典

[英]Separate key-values in a dictionary and recreate the dict after processing the values

我有一個像這樣的大詞典:

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

我使用一個接受字符串列表並進行一些處理的庫(在此示例中,生成公共前綴)。 因此,我從上述字典中提取了所有值。 一旦處理完成(在此示例中,我得到了前綴),我就有興趣將那些處理過的字符串(這里是通用前綴)分配回dict中的鍵。 例如這樣的事情:

{'T096': ['AAB'],
'T197': ['AAB']}  # in the rest, there are no common prefixes, so ignored, or set to None

現在,即使提取了所有值之后,我仍然需要保留鍵和值之間的映射。 有沒有辦法優雅地做到這一點?

編輯:用“字符串處理”代替“獲取前綴”,以反映問題的更廣泛范圍!

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM