字典的循环

2024-10-01 07:36:32 发布

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

编辑以下内容

我有一本大字典,里面有很多关于集群及其基因的信息。我正在尝试访问有关“cdhitclusters”的部分数据。这段代码工作得很好,完全符合我的要求(计算每个簇的rep_基因数)。我只是不知道如何为字典中的所有集群编写for循环

clus1 = (gene_clusters.get("cluster-1"))
cdhit1 = (clus1.get("cdhitclusters"))
rep1 = pd.DataFrame(cdhit1)
print(len(rep1.rep_gene))

这是字典的一部分:

{
    'cluster-1': {
        'BGCid': '-',
        'cdhitclusters': [
            {
                'genes': { 'AT1G24070': 100.0 },
                'rep_gene': 'AT1G24070'
            },
            {
                'genes': { 'AT1G24100': 100.0 },
                'rep_gene': 'AT1G24100'
            },
            {
                'genes': {
                    'AT1G24040': 100.0,
                    'AT1G2404_1': 100.0,
                    'AT1G2404_2': 100.0
                },
                'rep_gene': 'AT1G24040'
            },
            {
                'genes': {
                    'AT1G24020': 100.0,
                    'AT1G2402_1': 100.0
                },
                'rep_gene': 'AT1G24020'
            },
            {
                'genes': { 'AT1G24010': 100.0 },
                'rep_gene': 'AT1G24010'
            },
            {
                'genes': { 'AT1G24000': 100.0 },
                'rep_gene': 'AT1G24000'
            }
        ]
    ...

有45个集群,我如何编写一个循环来完成上面的代码,但对于所有集群

已更新

谢谢你的回答,他们成功了。我希望它输出到一个数据帧,我可以添加到一个更大的数据帧。这是我正在使用的代码,但它只计算循环中第一个集群的CDhit。我做错了什么

for clus in gene_clusters.values():
    cdhit = (clus.get("cdhitclusters"))
    rep = pd.DataFrame(cdhit)
    replen = rep.iloc[:,0]
    replen1 = len(rep.rep_gene)
    list = [replen1]    
    replen2 = pd.DataFrame(list, columns=['CDhits'])
    replen2 = replen2.CDhits

Tags: 数据代码dataframeforget字典基因集群
2条回答

您似乎没有使用该键,因此可以在字典的values()上进行迭代:

for clus in gene_clusters.values():
    cdhit = (clus.get("cdhitclusters"))
    rep = pd.DataFrame(cdhit)
    print(len(rep.rep_gene))

我认为在这种情况下,一个简单的方法是:

for cluster in gene_clusters.keys():
   #your code

我试过使用您提供的dict部分,gene_clusters.keys()生成了您想要的集群列表

相关问题 更多 >