所以我正在学习使用python,而且我在使用元组列表时遇到了麻烦。我试图计算每个元组名称后每个元组中的整数数。 恩。 [('百吉饼',4,3,2,1),('馅饼',6,5,4,2),(' cake',12 ,11,10,0)]
我的目标是能够保存每个元组的名称,然后计算它们之后的整数。我需要整数的数量,因为我必须考虑多个想要对待的人。
我的最终目标是。恩。蛋糕:12种馅饼:6如果我打印出2种价值最高的蛋糕。我该怎么做才能跳过字符串?
答案 0 :(得分:1)
使用字典理解:
r = {v[0] : max(v[1:] for v in data}
print(r)
{'bagels': 4, 'cakes': 12, 'pies': 6}
这相当于以下内容:
r = {} # declare a dict
for v in data:
i = v[0] # find the item name
j = max(v[1:]) # find the max of all integers following the item
r[i] = j # add an entry into the dictionary
<强>详情
dict理解是在python中表示for
循环的简洁方法。
v[0]
检索0 th 元素,并为其分配密钥
最后,如果你想显示结果r
,你可以迭代它:
for k, v in r.items():
print('{}:{}'.format(k, v))
cakes:12
bagels:4
pies:6
请注意,字典未订购,因此您不太可能以与输入条目相同的顺序打印结果。在这种情况下,您可以考虑使用list
:
r = ['{}:{}'.format(v[0], max(v[1:])) for v in data]
print(r)
['bagels:4', 'pies:6', 'cakes:12']
以类似的方式进行印刷。如果要打印从最高到最低的值,请使用sorted
致电reversed=True
。
for i in sorted(r, reverse=True):
print(i)
cakes:12
pies:6
bagels:4
答案 1 :(得分:0)
您可以使用字典:
s= [('bagels',4,3,2,1), ('pies',6,5,4,2), ('cakes',12,11,10,0)]
data = {i[0]:i[1:] for i in s}
要找到最高价值的待遇:
highest_val = 2
final_treats = sorted(data.items(), key=lambda x:max(x[-1]))[-highest_val:]
输出:
[('pies', (6, 5, 4, 2)), ('cakes', (12, 11, 10, 0))]