我目前正在尝试为正在开发的游戏制作广告资源。我遇到的问题是,当你有很多特定的项目时,它会浪费很多空间。
这是我的代码:( inv是库存)
inv = ["item1","item2","item3","item2","item2","item1"]
print(', '.join(inventory))
输出:
item1, item2, item3, item2, item2, item1
我想这样做,而不是这样做:
item1 x2, item2 x3, item3
我真的不在乎你是否需要将item3变成x1,无论哪种方式都没关系,谢谢。
答案 0 :(得分:1)
实际上有很多选择。主要目标是计算您的物品,并按顺序打印出来。
一种选择是使用collections.OrderedDict
。其他人是$ ps -o command 12345 |awk 'NR>1 { print $1 }'
sleep
/ collections.Counter
,但我会给你一个前者的例子:
collections.defaultdict
打印:
from collections import OrderedDict
counter = OrderedDict()
inv = ["item1", "item2", "item3", "item2", "item2", "item1"]
for i in inv:
if i not in counter:
counter[i] = 0
counter[i] += 1
for c in counter:
if counter[c] > 1:
print(c + ' x{}'.format(counter[c]))
else:
print(c)
如果您想在一行中打印出来,可以根据需要随意修改此示例。这段代码是用python3.x编写的。
答案 1 :(得分:0)
以下是Counter
的示例:
from collections import Counter
inv = ["item1", "item2", "item3", "item2", "item2", "item1"]
print (', '.join('%s x%d' % (item, count)
for item, count in sorted(Counter(inv).items())))
答案 2 :(得分:0)
['item1 x2', 'item2 x3', 'item3']
出:
idiv