Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python计算字母在某个位置出现的次数_Python_String_Count_Position_Frequency - Fatal编程技术网

使用python计算字母在某个位置出现的次数

使用python计算字母在某个位置出现的次数,python,string,count,position,frequency,Python,String,Count,Position,Frequency,我是一名python初学者,遇到了这个问题,我不确定如何着手解决它 如果我有以下序列/字符串: 关贸总协定 GTACGC 如何计算每个字母在每个位置出现的频率。ie)G在两个序列中的位置1处出现两次,A在位置1处出现零次等 任何帮助都将不胜感激,谢谢 您可以使用和的组合,例如: 这将构建一个嵌套的defaultdict,它将字符作为第一个键,位置作为第二个键,并提供所述字符在所述位置出现的次数 如果需要职位计数列表: max_len = max(map(len, sequences)) d =

我是一名python初学者,遇到了这个问题,我不确定如何着手解决它

如果我有以下序列/字符串:

关贸总协定

GTACGC

如何计算每个字母在每个位置出现的频率。ie)G在两个序列中的位置1处出现两次,A在位置1处出现零次等


任何帮助都将不胜感激,谢谢

您可以使用和的组合,例如:

这将构建一个嵌套的
defaultdict
,它将字符作为第一个键,位置作为第二个键,并提供所述字符在所述位置出现的次数

如果需要职位计数列表:

max_len = max(map(len, sequences))
d = defaultdict(lambda: [0]*max_len)  # d[char] = [pos0, pos12, ...]
for seq in sequences:
    for i, char in enumerate(seq): 
        d[char][i] += 1

d['G']  # [2, 0, 0, 0, 1, 1]

您可以使用和的组合,例如:

这将构建一个嵌套的
defaultdict
,它将字符作为第一个键,位置作为第二个键,并提供所述字符在所述位置出现的次数

如果需要职位计数列表:

max_len = max(map(len, sequences))
d = defaultdict(lambda: [0]*max_len)  # d[char] = [pos0, pos12, ...]
for seq in sequences:
    for i, char in enumerate(seq): 
        d[char][i] += 1

d['G']  # [2, 0, 0, 0, 1, 1]

不确定这是否是最好的方法,但您可以使用zip对字符串进行某种转置,在每个位置生成字母元组,例如:

x = 'GATCCG' 
y = 'GTACGC'

zipped = zip(x,y)

print zipped
将作为输出生成:

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

您可以从元组中看到,两个字符串的第一个位置包含两个G,第二个位置包含一个A和一个T,等等。然后您可以使用计数器(或其他方法)获取所需内容

不确定这是最好的方法,但您可以使用zip对字符串进行某种转置,在每个位置生成字母元组,例如:

x = 'GATCCG' 
y = 'GTACGC'

zipped = zip(x,y)

print zipped
将作为输出生成:

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

您可以从元组中看到,两个字符串的第一个位置包含两个G,第二个位置包含一个A和一个T,等等。然后您可以使用计数器(或其他方法)获取所需内容

你想要什么格式的?你能给我们举个例子吗,比如
{'g':[2,0,0,0,1,1],…}
?这就是你想要的吗?是的,一本字典就好了!你想要什么格式的?你能给我们举个例子吗,比如
{'g':[2,0,0,0,1,1],…}
?这就是你想要的吗?是的,一本字典就好了!对不起,你能解释一下这是做什么的吗?哦,谢谢,我得到了一些输出,我明白了。我希望输出看起来更像{'g':[2,0,0,0,1,1],…},这可能吗。现在你应该得到保护。我认为defaultdicts的功能相当直观。再次抱歉,我在d[char].append[I]行中遇到了一个类型错误。TypeError:“内置函数”或“方法”对象不可下标?我做了一些编辑。使用当前版本。它经过测试;)对不起,你能解释一下这是做什么的吗?哦,谢谢,我得到了一些输出,我明白了。我希望输出看起来更像{'g':[2,0,0,0,1,1],…},这可能吗。现在你应该得到保护。我认为defaultdicts的功能相当直观。再次抱歉,我在d[char].append[I]行中遇到了一个类型错误。TypeError:“内置函数”或“方法”对象不可下标?我做了一些编辑。使用当前版本。它经过测试;)