如何在Python中将列表的一部分转换成整数?

2024-06-28 19:06:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有名单,上面有名字和分数,例如:

[['AMY', '2', '9', '10'], ['ANNA', '10', '4', '7'], ['BOB', '6', '7', '10']]

我希望结局是这样的:

[['AMY', 2, 9, 10], ['ANNA', 10, 4, 7], ['BOB', 6, 7, 10]]

我需要将数字转换成整数,因为在尝试使用max()函数时,它们会给我带来问题,因为它无法将10识别为最大项。我已经试了这么久,但我不断得到不同类型的错误。我四处搜索,似乎每个人都在告诉我使用地图或列表理解,但这些似乎都不起作用。你知道吗


Tags: 函数类型列表错误地图数字整数名字
3条回答
data = [['AMY', '2', '9', '10'], ['ANNA', '10', '4', '7'], ['BOB', '6', '7', '10']]
dict_data = {sublist[0]: list(map(int, sublist[1:])) for sublist in data}

现在,您可以使用每个人的姓名访问他们的号码,例如:

>>> print(dict_data['AMY'])
[2, 9, 10]
>>> print(max(dict_data['AMY']))
10

对于字典创建,使用子列表中的第一个元素作为键,然后使用map()将其余元素转换为整数。正如你在其他问题中读到的list(map(int, sublist[1:]))[int(i) for i in sublist[1:]]是一样的。你知道吗

解决方案是:

data = [['AMY', '2', '9', '10'], ['ANNA', '10', '4', '7'], ['BOB', '6', '7', '10']]
print [[a if not a.isdigit() else int(a) for a in element] for element in data]

因为每个list的第一个元素看起来像是一个名字,而其他元素可能是测试分数,所以您应该使用一个字典,其中有一个人名的键和一个list的分数值:

l = [['AMY', '2', '9', '10'], ['ANNA', '10', '4', '7'], ['BOB', '6', '7', '10']]
dct = {x[0]:[int(el) for el in x[1:]] for x in l}

然后,您可以更轻松地处理数据:

>>> for name in dct:
...     print(name, max(dct[name]))
...
('AMY', 10)
('BOB', 10)
('ANNA', 10)

相关问题 更多 >