首页 > 解决方案 > 当我在 Python 中进行循环时,只剩下最后一个键/值对添加到字典中

问题描述

使用 Python 3,我试图获取一个名称字典和一个长字符串中某些字符串的出现次数。

我坐在这里拔头发,因为这不应该很复杂,但是我已经阅读了很多答案,但我仍然没有得到它。我已经 5 个小时了,现在绝对看不到树木的树木。

希望有人能告诉我哪里出错了。

该字符串称为seq.

seq = 'AAGGTAAGTTTAGAATATAAAAGGTGAGTTAAATAGAATAGGTTAAAATTAAAGGAGATCAGATCAGATCAGATCTATCTATCTATCTATCTATCAGAAAAGAGTAAATAGTTAAAGAGTAAGATATTGAATTAATGGAAAATATTGTTGGGGAAAGGAGGGATAGAAGG'

我有一个我正在寻找的单词的 CSV,它在一个名为的列表中nu

nu = ['AGATC', 'AATG', 'TATC']

代码应该使用 nu 中的每个单词并计算seq.

这是我的循环

for i in nu:
    searchstr = {}
    # Line returns a dict of the last value added
    searchstr = dict(key = (i), count = (seq.count(i)))
    print(searchstr)

print(searchstr.keys())
print(searchstr.values())

和输出,所以我知道我将计数与键正确匹配:

{'key': 'AGATC', 'count': 4}
{'key': 'AATG', 'count': 1}
{'key': 'TATC', 'count': 5}
dict_keys(['key', 'count'])
dict_values(['TATC', 5])

我一生都无法将三个字典合二为一。我只剩下一个 ['TATC', 5] 的字典,因为它已经覆盖了列表中的前一个。

我对此仍然很陌生,但一直在努力学习。

标签: pythonpython-3.xloopsdictionary

解决方案


您所需要的只是将元素分配给字典,而不是每次都创建一个新字典:

searchstr = {}
for i in nu:
    searchstr[i] = seq.count(i)
print(searchstr)

推荐阅读