Python 如何从元组中删除方括号和逗号

Python 如何从元组中删除方括号和逗号,python,Python,我正在尝试打印字符串的前5个字符。 例如,如果我键入“aaaabbcccddfg” 我是否可以更改输出,使其成为a:4、b:4、c:3、d:2、f:1 代码为: import sys from collections import Counter try: string = sys.argv[1] counts=Counter(string.lower()) # Counter({'l': 2, 'H': 1, 'e': 1, 'o': 1}) lista = cou

我正在尝试打印字符串的前5个字符。 例如,如果我键入“aaaabbcccddfg”

我是否可以更改输出,使其成为a:4、b:4、c:3、d:2、f:1

代码为:

import sys
from collections import Counter

try:
    string = sys.argv[1]

    counts=Counter(string.lower()) # Counter({'l': 2, 'H': 1, 'e': 1, 'o': 1})
    lista = counts.most_common(5)

    print lista

except ValueError:
    print "Error"
目前的结果是:[(“a”,4),(“b”,4),(“c”,3),(“d”,2),(“f”,1)]

适用于python 2.7:

from __future__ import print_function
import sys
from collections import Counter

try:
    string = sys.argv[1]
    counts=Counter(string.lower()) # Counter({'l': 2, 'H': 1, 'e': 1, 'o': 1})
    lista = counts.most_common(5)
    print (lista)
    for l in lista:
        print(':'.join(str(e) for e in l), end=",")

except ValueError:
    print ("Error")

这适用于Python2.7

import sys
from collections import Counter

try:
    string = sys.argv[1]
    counts=Counter(string.lower())
    lista = counts.most_common(5)
    dict_lista = dict((x, y) for x, y in lista)
    print lista
    for key,item in dict_lista.items():
        print key + ":" + str(item)

except ValueError:
    print "Error"

它首先形成一个字典,然后打印它的键和项,而不使用
s-我保留原始元组只是为了比较。

只需执行以下操作:

for key,val in dict(lista).items(): 
       print( str(key) + ':' + str(val), end=', ') 

这将使用列表理解打印
a:4、b:4、c:3、d:2、f:1

一行解决方案:

listb = ",".join([str(a) + ":" + str(b) for a, b in lista])
print listb # output => a:4,b:4,c:3,d:2,g:1
是的

那里有很多事情,所以让我们把它分解一下。
“{letter}:{count}”
是一个函数,这就是从数据创建字符串的方法。从Python3.6开始,这会变得更容易一些。一旦你习惯了这样格式化字符串,你会很高兴的

lambda(c,n):…
这是一个lambda函数。换句话说,它是一个函数定义,可以重复应用于数组
lista
,而无需在代码中进行上述定义。(c,n)在这里做了一件叫做“解包”的事情,其中
lista
中的元素是成对的,因此这将第一个元素分成两部分,分别存储在
c
n
中。 Lambda函数与
map
非常配合,map将函数作为参数和集合,然后将该参数应用于该集合并返回结果列表

最后一件事是
str.join()
。这是一种将字符串组合在一起的有效方法。它是一种字符串方法,将字符串列表作为参数,并返回由原始字符串分隔的新字符串。例如,.join(['a','b','c'])将导致
'a,b,c'

编辑: 错误修复和一行程序:

print ','.join(map(lambda (c,n): "{letter}:{count}".format(letter=c,count=n), Counter(sys.argv[1].lower()).most_common(5))) if len(sys.argv) > 1 else "Error"

那么本质上来说,一本字典?你想把你在字典里的表现打印出来吗?你能把
lista
的输出包括在内吗?是的,但如果我没弄错,字典里还有“”,有没有办法把它从字典里删除?抱歉,对python来说太陌生了删除“”有什么意义?您的值显然是字符串。我实际上使用的是python 2.7。是否有与2.7中的end=“,”类似的内容?请在代码中添加“from future import print_函数”。
print ','.join(map(lambda (c,n): "{letter}:{count}".format(letter=c,count=n), Counter(sys.argv[1].lower()).most_common(5))) if len(sys.argv) > 1 else "Error"