Python 在列表中打印匹配项
我刚刚开始学习python, 我有一个简单的问题Python 在列表中打印匹配项,python,python-3.x,list,Python,Python 3.x,List,我刚刚开始学习python, 我有一个简单的问题 l=['aa123','aa122','aa124','bb125','bb180'] #form above list i want to print a result as following: Group 1 aa123 aa122 aa124 Group 2 bb125 bb180 我希望如果我用“cc000”更新列表,它也会打印“第3组” 感谢和问候, Giovanni您可以使用字典更好地分组您的值: import string
l=['aa123','aa122','aa124','bb125','bb180']
#form above list i want to print a result as following:
Group 1
aa123
aa122
aa124
Group 2
bb125
bb180
我希望如果我用“cc000”更新列表,它也会打印“第3组”
感谢和问候,
Giovanni您可以使用字典更好地分组您的值:
import string
from collections import defaultdict
l=['aa123','aa122','aa124','bb125','bb180']
key = {a:b+1 for a, b in zip(string.ascii_lowercase, range(26))}
d = defaultdict(list)
for val in l:
d[key[val[0]]].append(val)
for a, b in d.items():
print("Group {}".format(a), b)
输出:
Group 1 ['aa123', 'aa122', 'aa124']
Group 2 ['bb125', 'bb180']
{'Group b': ['bb125', 'bb180'], 'Group a': ['aa123', 'aa122', 'aa124']}
或者,在列表理解中使用groupby
:
import itertools
final_vals = {"Group {}".format(a):list(b) for a, b in itertools.groupby(sorted(l, key=lambda x:x[0]), key=lambda x:x[0])}
print(final_vals)
输出:
Group 1 ['aa123', 'aa122', 'aa124']
Group 2 ['bb125', 'bb180']
{'Group b': ['bb125', 'bb180'], 'Group a': ['aa123', 'aa122', 'aa124']}
有点慢,因为您要进行26*len(i)迭代来创建排序列表。我不确定这是否完全回答了你的问题。。。当“ab111”这样的项目出现在列表中时会发生什么?它会忽略这一点吗?看一看,似乎您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际获得的输出(控制台输出、回溯等)。你提供的细节越多,你可能得到的答案就越多。检查和。实际上我试着在上面写了很多代码,我没有发布它以避免产生误解。我想从你那里知道什么是最好的方法。我不是在寻找一个书面的代码,如果不是的话,我会在我的真实项目中添加一个例子。根据Felk的建议,我将看一看groupby。