2017-09-22 236 views
-2

我試圖獲得打印字符串的前5個字符。 例如,如果我輸入「aaaabbbbcccddfg」如何從元組中刪除括號和逗號

是否有反正我可以改變輸出,所以它變成了: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" 

當前結果是:[( 「一」,4),( 「B」,4),( 「C」,3),( 「d」,2 ),( 「F」,1)]

+0

所以基本上,一本字典? – Mangohero1

+0

你想打印字典中的內容嗎?你可以包括'lista'的輸出那裏 –

+0

是的,但如果我沒有錯,字典仍然有'',反正有沒有從字典中刪除?對不起,蟒蛇很新 – 03131992

回答

0

Works的蟒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") 
+0

我實際上使用python 2.7。有沒有類似於2.7中的end =「,」? – 03131992

+0

在代碼中添加「from __future__ import print_function」。 –

0

這適用於Python 2.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" 

它首先形成一本字典,然後在沒有" "的情況下打印它的鍵和項目 - 爲了比較,我留下了原來的元組。

0

只需做到以下幾點:

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

這將使用列表理解打印a:4, b:4, c:3, d:2, f:1

0

一號線的解決方案:

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

是啊。

print ','.join(map(lambda (c,n): "{letter}:{count}".format(letter=c,count=n), lista)) 

有很多事情在那裏,所以讓我們分解它。 "{letter}:{count}"是一個format string這就是你應該如何從數據創建字符串。從Python 3.6開始,這變得更容易一些。一旦你習慣於像這樣格式化字符串,你會很開心。

lambda (c,n): ...這是一個lambda函數。換句話說,它是一個函數定義,可以重複應用於數組,而不必在代碼中定義如上。 (c,n)在這裏做一些名爲「解包」的事情,其中​​lista中的元素是成對的,所以這將第一個元素分成兩部分並分別存儲在cn中。 使用函數作爲參數和集合的map可以很好地發揮Lambda函數的作用,然後將該參數應用於該集合並返回結果列表。

最後一件事是str.join()。這是將字符串放在一起的有效方法。它是一種字符串方法,它將字符串列表作爲參數,並返回由原始字符串分隔的新字符串。例如','.join(['a','b','c'])會導致'a,b,c'

編輯: bug修復和一個班輪:

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"