我有一個字典串列,其中鍵是“group_names”,值是gene_lists。
我想通過遍歷物種串列來用新的基因串列更新每個字典。
這是我的偽代碼:
groups=["group1", "group2"]
species_list=["spA", "spB"]
def get_genes(group,sp)
return gene_list
for sp in species_list:
for group in groups:
gene_list[group]=get_genes(group,sp)
gene_list.update(get_genes(group,sp))
這段代碼的問題是新基因被之前的基因替換/覆寫,而不是被添加到字典中。我的問題是我應該在哪里放置以下行。雖然,我不確定這是否是唯一的問題。
gene_list.update(get_genes(group,sp))
我擁有的資料看起來像這個資料框:
data={"group1":["geneA1", "geneA2"],
"group2":[ "geneB1","geneB2"]}
pd.DataFrame.from_dict(data).T
我要創建的資料應如下所示:
data={"group1":["geneA1", "geneA2", "geneX"],
"group2":[ "geneB1","geneB2", "geneX"]}
pd.DataFrame.from_dict(data).T
所以在這種情況下,“gene_x”指的是每個物種通過get_genes函式獲得的新基因,最后更新到現有字典中。
任何幫助將非常感激!!
uj5u.com熱心網友回復:
您需要附加到字典條目中的串列,而不是分配它。
使用setdefault()如果字典鍵不存在,提供默認的空串列。
for sp in species_list:
for group in groups:
gene_list.setdefault(group, []).extend(get_genes(group, sp))
uj5u.com熱心網友回復:
據我了解,您想將新基因附加到每個鍵上,以便做到這一點:
new_gene = "gene_x"
data={"group1":["geneA1", "geneA2"], "group2":[ "geneB1","geneB2"]}
for value in data.values():
value.append(new_gene)
print(data)
您還可以在可以直接附加的地方使用 defaultdict(請閱讀相關檔案)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358205.html
