如何在python中从包含数字和字符串的列表打印表
我试图打印一个表,从我目前的代码,它只输出一个列表,但我不知道如何实现这一点如何在python中从包含数字和字符串的列表打印表,python,Python,我试图打印一个表,从我目前的代码,它只输出一个列表,但我不知道如何实现这一点 {'judy': 1, 'dean': 1, 'andrew': 2, 'sam': 4, 'fred': 2} 当输入为3时,我希望以这种格式输出列表: 4 sam 2 andrew fred 1 dean judy 或者,如果输入为2(所有领带也需要按字母顺序排列): 这是迄今为止我的代码,它只输出一个列表: x = input("Enter a number: ") with open('stream.tx
{'judy': 1, 'dean': 1, 'andrew': 2, 'sam': 4, 'fred': 2}
当输入为3时,我希望以这种格式输出列表:
4 sam
2 andrew fred
1 dean judy
或者,如果输入为2(所有领带也需要按字母顺序排列):
这是迄今为止我的代码,它只输出一个列表:
x = input("Enter a number: ")
with open('stream.txt','r') as f:
tweetlist = [r.split()[0] for r in f if "DM" not in r and "RT" not
in r]
tweet_counter = {}
for tweet in tweetlist:
if tweet in tweet_counter:
tweet_counter[tweet] += 1
else:
tweet_counter[tweet] = 1
popular_users = sorted(tweet_counter, key = tweet_counter.get, reverse
= True)
top = popular_users[:x]
top.sort()
print(tweet_counter)
提前感谢,非常感谢您提供的所有帮助这里有一个
集合。计数器
对象用于计算事物,因此您的第一个循环:
tweet_counter = {}
for tweet in tweetlist:
if tweet in tweet_counter:
tweet_counter[tweet] += 1
else:
tweet_counter[tweet] = 1
可替换为:
from collections import Counter
tweet_counter = Counter(tweetlist)
Counter.most_common()
按值顺序返回(键,值)
,然后您可以使用python强大的迭代器代数(itertools
)来获得所需的结果。首先使用itertools.groupby()
将值分组,然后使用itertools.islice()
获取所需的数字,例如:
import itertools as it
import operator as op
def print_table(tc, n):
name, value = op.itemgetter(0), op.itemgetter(1)
for k, g in it.islice(it.groupby(tc.most_common(), value), n):
print(k, ' '.join(sorted(map(name, g))))
In []:
print_table(tweet_counter, 2)
Out[]:
4 sam
2 andrew fred
In []:
print_table(tweet_counter, 3)
Out[]:
4 sam
2 andrew fred
1 dean judy
有没有办法确保打印时不带括号?哪些括号?我得到(4,'sam')(2,'andrew fred')(1,'dean judy')啊,您使用的是Py2,您可以删除打印的括号,例如,
print k',.join(排序(map(name,g)))
或将从_未来_导入打印_功能
放在程序顶部。在Py3中,print()
是一个函数。有没有办法把我的程序转换成python 3?如何检查我使用的是哪个版本?(我正在mac上使用pycharm)
import itertools as it
import operator as op
def print_table(tc, n):
name, value = op.itemgetter(0), op.itemgetter(1)
for k, g in it.islice(it.groupby(tc.most_common(), value), n):
print(k, ' '.join(sorted(map(name, g))))
In []:
print_table(tweet_counter, 2)
Out[]:
4 sam
2 andrew fred
In []:
print_table(tweet_counter, 3)
Out[]:
4 sam
2 andrew fred
1 dean judy