迭代存储在列表中的多个字典中的值和键

时间:2021-05-18 05:03:43

标签: python list dictionary

我有一本字典

selection60 = {"A":2, "T":2, "G":3, "C":3}
sseq60=[]
for k in selection60:
    sseq60 = sseq60 + [k] * int(selection60[k])
    random.shuffle(sseq60)

此代码的输出: sseq60=['C', 'G', 'T', 'C', 'C', 'A', 'G', 'G', 'T', 'A']

我知道如何使用 for 循环访问每个键的值。 现在,我有一个字典列表:

[{'A': 2, 'T': 2, 'G': 3, 'C': 3}, {'A': 3, 'T': 3, 'G': 3, 'C': 1}]

如何遍历列表中的每个字典并执行相同的操作? 最终,我想做同样的事情并创建一个列表列表

预期输出:

[['C', 'G', 'T', 'C', 'C', 'A', 'G', 'G', 'T', 'A']['C', 'G', 'T', 'T', 'T', 'A', 'G', 'G', 'A', 'A']]

2 个答案:

答案 0 :(得分:2)

我认为这就是你想要的:

selection60 = [{'A': 25.0, 'T': 25.0, 'G': 24, 'C': 26}, {'A': 25.0, 'T': 25.0, 
                'G': 30, 'C': 20}, {'A': 23.0, 'T': 23.0, 'G': 34, 'C': 20}]
sseq60_list = []
for selection_dict in selection60:
    sseq60 = []
    for k, v in selection_dict.items():
        sseq60 = sseq60 + [k] * int(v)
        random.shuffle(sseq60)
    sseq60_list.append(sseq60)

答案 1 :(得分:1)

您可以将代码片段定义为函数,例如:

from typing import List, Dict

def randomize_dna_seq(d: Dict) -> List[str]:
    selection60 = {"A":20, "T":20, "G":30, "C":30}
    sseq60=[]
    for k in selection60:
        sseq60 = sseq60 + [k] * int(selection60[k])
        random.shuffle(sseq60)
    return sseq60

然后,当你有一个这样的字典列表时,你可以使用 map 创建一个列表列表:

seq_dicts = [{'A': 25.0, 'T': 25.0, 'G': 24, 'C': 26}, {'A': 25.0, 'T': 25.0, 'G': 30, 'C': 20}, {'A': 23.0, 'T': 23.0, 'G': 34, 'C': 20}]
randomized_seqs = list(map(randomize_dna_seq, seq_dicts))
相关问题