我正在创建两个函数,一个函数将返回列表列表:列表中的第一个元素包含出现在字符串集合中的字母列表,第二个元素包含其计数列表。第二个是遍历从第一个函数返回的列表的列表,找到最大的计数并将其作为变量big返回。我正在尝试将第一个函数返回的字母计数与第二个函数返回的最大字母计数进行比较,以打印出相等的值。由于某些原因,相等的值无法打印,我不确定为什么吗?有人可以指出我正确的方向吗?
def mkdict():
""" This function is creating a dictionary of letters and their frequency."""
for string in strings:
for letter in string:
if letter in array[0]:
pos = array[0].index(letter)
array[1][pos] = array[1][pos] + 1
else:
array[0].append(letter)
array[1].append(1)
return array
# Printing this function returns: [['a', 'b', 'c', 'd', 'e', 'f', 'g', 'i', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'z'], [5, 1, 2, 4, 1, 6, 3, 6, 1, 1, 1, 2, 4, 2, 3, 3, 3, 6]]
def getlar():
list = mkdict()
large = list[1][0]
for item in list[1]:
if item > large:
large = item
return large
# Printing this function returns: 6.
for num in mkdict()[1]:
if num == getlar():
print num
# This loop should print : 6 three times but it isn't.
问题是您没有array
在中初始化mkdict()
,因此每次调用它时,您都会将其添加到全局array
变量中(未显示,但显然必须存在,否则会出错)。您应该使用局部变量。
def mkdict():
""" This function is creating a dictionary of letters and their frequency."""
array = []
for string in strings:
for letter in string:
if letter in array[0]:
pos = array[0].index(letter)
array[1][pos] = array[1][pos] + 1
else:
array[0].append(letter)
array[1].append(1)
return array
另外,您不应mkdict()
每次都致电lar()
。计数不会改变,因此您只需调用一次,将结果保存到变量中,然后将其传递给即可getlar()
。
def getlar(list):
large = list[1][0]
for item in list[1]:
if item > large:
large = item
return large
counts = mkdict()
for num in counts[1]:
if num == getlar(counts):
print num
实际上,getlar()
重复调用也是不必要的,因为最大的调用不会改变。
counts = mkdict()
largest = getlar(counts)
for num in counts[1]:
if num = largest:
print num
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句