python - 如何使用复杂列表中的数字作为标题/如何仅打印与某个值匹配的列表的一部分
问题描述
我有一个包含另一个列表的复杂列表。每个列表构成一组的一部分(在程序的另一部分中,它一次读取 3 个值,如果您有 2 个负载的 3 个值,那么它会将它们分别设置在一个集合中。例如,在我的第一组下面输入是:
12, 11, 1
12, 6, 2
8, 7, 1
然后我的第二组输入是:
6, 6, 1
如此有效地,每个输入都将是一组的一部分:
Set 1:
12, 11, 1
12, 6, 2
8, 7, 1
Set 2:
6, 6, 1
这被设置为一个“历史”变量,该变量会记住所有集合及其输入,直到被清除,存储为 [[inputs]setnumber] 其中外部项目是集合编号,内部项目是在该集合上接收到的输入:
[[12, 11, 1], 1]
[[12, 6, 2], 1]
[[8, 7, 1], 1]
[[6, 6, 1], 2]
我需要做的是以以下格式打印出来:
Starting with set 1:
12, 11, 1
12, 6, 2
8, 7, 1
Starting with set 2:
6, 6, 1
相反,我得到的是:
Starting with set 1
The Following appear:12,11,1
Starting with set 1
The Following appear:12,6,2
Starting with set 1
The Following appear:8,7,1
Starting with set 2
The Following appear:6,6,1
无论我多么努力,或者我玩了多少次 if 语句,while 循环(这只会让事情变得更糟)我无法让它表现得像我期望的那样。目前我的基本代码如下。
我很确定我错过了一些简单的东西或使用了错误类型的对象,但对于我的一生来说,解决方案一直让我无法理解并且让我发疯。
SetHistory = [[[12, 11, 1], 1], [[12, 6, 2], 1], [[8, 7, 1], 1], [[6, 6, 1], 2]]
for Results, Set_Number in SetHistory:
UnpackResults = [Results]
UnpackSet = [Set_Number]
for i in UnpackSet:
print(f'Starting with set {Set_Number}')
for i, v, x in UnpackResults:
print(f'The Following appear:{i},{v},{x} ')
解决方案
让我们用字典来解决这个问题。
SetHistory = [[[12, 11, 1], 1], [[12, 6, 2], 1], [[8, 7, 1], 1], [[6, 6, 1], 2]]
set_dict = {}
for Results, Set_Number in SetHistory:
if Set_Number in set_dict:
set_dict[Set_Number].append(Results)
else:
set_dict[Set_Number] = [Results]
for a_set in sorted(set_dict):
print('Set '+str(a_set))
for val_list in set_dict[a_set]:
print(*val_list)
这样,字典中的每个条目都是一个集合编号。它包含该号码的列表列表,因此您在处理每个列表之前知道设置的号码。
推荐阅读
- android - 程序类型已存在:我的应用程序中的 android.support.v4.app.BackStackRecord$Op
- datatables - 删除数据表搜索字段而不禁用可搜索
- angular - 将 Auth0 用户信息存储到 Angular2+ 服务中
- xcode - Xcode 10 错误:产生多个命令
- json - 使用 RestSharp 和 Newtonsoft.Json 实现反序列化
- javascript - 使用 reactstrap navbar 做出反应:窗口滚动时如何在导航栏标签上添加和删除类
- android - 添加 Firebase 广告依赖项时 gradle 出错
- function - 像 cronjob 一样启动 Symfony 4 功能(作为 ADMIN)
- unix - 如何在 unix(.ksh) 中现有文件的新行中附加变量值?
- assembly - 内存反汇编视图中的汇编代码含义