我现在只是有个格式化的小问题。我当前的代码以一种不稳定的方式打印出我的代码,我正在努力使它看起来更平滑。如何更改打印格式
height = {}
length = len(preys)
rank = 0
while preys != [None]*length:
for index,(animal,prey) in enumerate(zip(animals,preys)):
if prey not in animals:
try:
if height[prey] < rank:
height[prey] = rank
except KeyError:
height[prey] = 0
height[animal] = height[prey] + 1
preys[index] = None
animals[index] = None
rank += 1
for arg in sys.argv:
print (sorted (height.items(),key = lambda x:x[1],reverse=True))
如果名称==“main”: 主()
输出如下所示:
[(‘龙虾’,4)、(‘鸟’,4)、(‘鱼’,3)、(‘青春痘’,3)、(‘螃蟹’,3)、(‘贻贝’,2)、(‘对虾’,2)、(‘浮游动物’,1)、(‘帽贝’,1)、(‘浮游植物’,0)、(‘海藻’,0)]
我想让它看起来像:
Heights:
Bird: 4
Crab: 3
Fish: 3
Limpets: 1
Lobster: 4
Mussels: 2
Phytoplankton: 0
Prawn: 2
Seaweed: 0
Whelk: 3
Zooplankton: 1
我尝试使用:print(formatList(height))格式,但是在“height”之前打印任何内容都会导致错误
由于输出只打印一次,我们知道
sys.argv
没有传递任何额外的参数。不需要创建一个只执行一次的循环(而且,如果有多个参数,则通常不需要多次打印相同的输出)。相反,在height
对象本身上循环您当前也在按值排序,显然您希望按键排序。由于后者是默认的排序方式,我不知道为什么要添加(凌乱的)代码来按值排序
使用字符串格式来表示每个项目所需的外观
请注意,对
tuple
对象的iterable排序将首先按第一个元素排序,然后,如果有两个tuple
具有相同的第一项,则将按第二个元素排序。例如,('Bird', 1)
将出现在('Bird', 2)
之前。因为字典不能有重复的键,所以这在这里不是问题,但是要记住我想你可以试试这样:
或者用一种表达方式(如果对你来说不难看的话):
相关问题 更多 >
编程相关推荐