if语句的每个循环,保存到不同的变量

时间:2015-07-21 09:47:50

标签: python variables count split char

我试图获取文档中字母的频率,然后将它们分成单个变量,这样我就可以将它们变成百分比。我遇到的问题是,每当if语句转过来时,变量var1都会被重写......我不确定如何才能获得26个字符中的每一个字符'将频率写入单独的变量,以便我可以将它们转换为百分比并单独使用每个百分比。

这是我的代码,var1最终打印为文件中的最后一个或最不常见的字母:

def freq():
    info = input("File Name")
    filehandle = open(info, "r")
    data = filehandle.read().upper()
    char_counter = collections.Counter(data)
    for char, count in char_counter.most_common():
        if char in string.ascii_uppercase:
            s = (str(count))
            my_tokens = s.split("|")
            print(my_tokens)
            global var1
            var1 = my_tokens[0]

freq()
print(var1)

任何帮助都会非常感激,因为我有点不知所措。感谢。

3 个答案:

答案 0 :(得分:1)

您可以使用dictionary,其中您的char是键,值是出现的次数,如下所示:

import collections

def freq():
    var1 = dict()
    info = input("File Name")
    filehandle = open(info, "r")
    data = filehandle.read().upper()
    char_counter = collections.Counter(data)
    for char, count in char_counter.most_common():
        if char in data.upper():
            s = (str(count))
            my_tokens = s.split("|")
            print(my_tokens)
            var1[char] = my_tokens[0]
    return var1

var1 = freq()
print(var1)

您可以在此处详细了解字典的使用http://www.tutorialspoint.com/python/python_dictionary.htm

答案 1 :(得分:0)

您想使用dict

def freq():
    info = input("File Name")
    filehandle = open(info, "r")
    data = filehandle.read().upper()
    char_counter = collections.Counter(data)
    result = {}
    for char, count in char_counter.most_common():
        if char in string.ascii_uppercase:
            s = (str(count))
            my_tokens = s.split("|")
            print(my_tokens)
            result[char] = my_tokens[0]

result = freq()
print(result)

答案 2 :(得分:-1)

将每个char freq存储到一个hash(map)中,其中key是char本身,value是整数。遇到每个字符的增量整数值