python - 当我在 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] 的字典,因为它已经覆盖了列表中的前一个。
我对此仍然很陌生,但一直在努力学习。
解决方案
您所需要的只是将元素分配给字典,而不是每次都创建一个新字典:
searchstr = {}
for i in nu:
searchstr[i] = seq.count(i)
print(searchstr)
推荐阅读
- c++ - 如何连接文件路径?
- jython - 如何通过 maximo 中的 jython 脚本获得 NTLM 身份验证
- javascript - 如何使用单选按钮输入值将表单输入填充到重定向的网页中
- angular6 - 如何将一个组件表单输入的值发送到Angular 6中的另一个组件?
- c# - 每个 C# 脚本都在控制台上抛出错误
- typescript - Typescript:如何正确键入此条件数组函数?
- python - 如何在变体大小的reduce_mean之后堆叠张量在张量流中聚集?
- visual-studio - 为什么 Option 上的字体在 Visual Studio 2017 中不断变化?
- angular - zone.js 承诺即使使用 catch 块也会返回 Unhandled Promise Rejection 错误
- android - 自定义键盘无法写入 TextView