Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 3.x 如何将返回列表的布局改进为[a=0,b=0,…]? 总结:_Python 3.x - Fatal编程技术网

Python 3.x 如何将返回列表的布局改进为[a=0,b=0,…]? 总结:

Python 3.x 如何将返回列表的布局改进为[a=0,b=0,…]? 总结:,python-3.x,Python 3.x,下面的函数对字符串中的字母进行计数,将它们放入列表并返回列表 问题: 下面的函数返回的列表看起来不是很优雅 string = "Hello, world!" lijst = [] string = string.lower() def countAlphabeth( string ): for i in range( 0, 26 ): x = chr(ord( "a" ) + i ) string.count( x ) lijst.app

下面的函数对字符串中的字母进行计数,将它们放入列表并返回列表

问题: 下面的函数返回的列表看起来不是很优雅

string = "Hello, world!"
lijst = []
string = string.lower()

def countAlphabeth( string ):
    for i in range( 0, 26 ):
        x = chr(ord( "a" ) + i )
        string.count( x )
        lijst.append( str( x + ' =' ) )
        lijst.append(string.count( x ) )
    return lijst

lijst = countAlphabeth( string )
print( lijst )
以下是打印后列表的显示方式:

['a =', 0, 'b =', 0, 'c =', 0, 'd =', 1, 'e =', 1, 'f =', 0, 'g =', 0, 'h =', 
  1, 'i =', 0, 'j =', 0, 'k =', 0, 'l =', 3, 'm =', 0, 'n =', 0, 'o =', 2, 
 'p =', 0, 'q =', 0, 'r =', 1, 's =', 0, 't =', 0, 'u =', 0, 'v =', 0, 'w =', 
  1, 'x =', 0, 'y =', 0, 'z =',0]
预期结果: 我应该做什么样的改变才能得到下面这样的结果

[a = 0, b = 0, c = 0, d = 1, e = 1, f = 0, g = 0, h = 1, i = 0, j = 0, k = 0,
 l = 3, m = 0, n = 0, o = 2, p = 0, q = 0, r = 1, s = 0, t = 0, u = 0, v = 0,
 w = 1, x = 0, y = 0, z = 0]

你用的是一种奇怪的方式。你真正想要的是一本字典。我会这样做:

class Freq:
    def __init__(self, string):
        self.dijct = {}
        for i in range( 0, 26 ):
            x = chr(ord( "a" ) + i )
            string.count( x )
            self.dijct[x] = string.count(x)

    def __str__(self):
        printString = "["

        for (letter, frequency) in self.dijct.items():
            printString += "{} = {}, ".format(letter, frequency)

        printString = printString[:-2] # remove trailing comma and space
        printString += "]"
        return printString

string = "Hello, world!"
string = string.lower()

print(Freq(string))
输出:

[a = 0, b = 0, c = 0, d = 1, e = 1, f = 0, g = 0, h = 1, i = 0, j = 0, k = 0, l = 3, m = 0, n = 0, o = 2, p = 0, q = 0, r = 1, s = 0, t = 0, u = 0, v = 0, w = 1, x = 0, y = 0, z = 0, ]
['a = 0', 'b = 0', 'c = 0', 'd = 1', 'e = 1', 'f = 0', 'g = 0', 'h = 1', 'i = 0', 'j = 0', 'k = 0', 'l = 3', 'm = 0', 'n = 0', 'o = 2', 'p = 0', 'q = 0', 'r = 1', 's = 0', 't = 0', 'u = 0', 'v = 0', 'w = 1', 'x = 0', 'y = 0', 'z = 0']

您可以编写自己的
\uuu str\uuu
函数,并诱使python的list类使用它,但我认为您最好只提供自己的类来存储频率分布,这样您就可以以一种简单的方式提供自己的打印函数。

您考虑过使用一个吗

印刷品

a = 0
b = 0
c = 0
d = 1
e = 1
f = 0
g = 0
h = 1
i = 0
j = 0
k = 0
l = 3
m = 0
n = 0
o = 2
p = 0
q = 0
r = 1
s = 0
t = 0
u = 0
v = 0
w = 1
x = 0
y = 0
z = 0

你们可以用柜台。记下所需值的列表

from collections import Counter

def data_list(str_data):
    lst = list()
    if not isinstance(str_data, str):
        return lst
    resp = Counter(str_data.lower())
    for ascii in range(97, 123):
        letter = chr(ascii)
        lst.append('{} = {}'.format(letter, resp.get(letter, 0)))
    return lst

print(data_list('Hello, world!'))
输出:

[a = 0, b = 0, c = 0, d = 1, e = 1, f = 0, g = 0, h = 1, i = 0, j = 0, k = 0, l = 3, m = 0, n = 0, o = 2, p = 0, q = 0, r = 1, s = 0, t = 0, u = 0, v = 0, w = 1, x = 0, y = 0, z = 0, ]
['a = 0', 'b = 0', 'c = 0', 'd = 1', 'e = 1', 'f = 0', 'g = 0', 'h = 1', 'i = 0', 'j = 0', 'k = 0', 'l = 3', 'm = 0', 'n = 0', 'o = 2', 'p = 0', 'q = 0', 'r = 1', 's = 0', 't = 0', 'u = 0', 'v = 0', 'w = 1', 'x = 0', 'y = 0', 'z = 0']

谢谢虽然这仍然高于我的经验水平,但由于我刚刚开始学习Python,我非常感谢您的解决方案,它工作得非常完美。当然。至少你应该学会使用字典,它们会让你的生活更轻松:其他需要搜索的东西:“类”、“函数”和“str”。如果您不确定某些东西是如何工作的,只需在一些文档和交互式shell之间来回切换即可。你可以通过一点专注来修补你的理解方式。谢谢!谢谢你令人振奋的话语!你帮了大忙!我相信词典将在我的书的下一章中讨论:-)我将查看链接。谢谢!正如我在上面写给你的同事helpen MatrixMan一样,这也是一个非常好的解决方案。但仍高于我的专业水平,希望这将很快改变。这也是一个创造性的解决方案,不幸的是,仍高于我的专业水平。