如何在Python中将部分列表转换为整数?

时间:2016-03-21 21:11:09

标签: 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识别为最大项目。我已经尝试了这么久但我一直在尝试不同类型的错误。我四处搜索,似乎每个人都在告诉我使用地图或列表理解,但这些似乎都不起作用。

4 个答案:

答案 0 :(得分:2)

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:]]相同。

答案 1 :(得分:0)

解决方案是:

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]

答案 2 :(得分:0)

由于看起来每个function callPage(stPageLink, stPageParams) { $("#PageContent").load(stPageLink + $.param(stPageParams)) } $(document).ajaxSuccess(function(event, jqxhr, options, data) { var data = options.url.split("?")[1].split("="); var res = {}; res[data[0]] = data[1]; $("#txt1").val(res[data[0]]); }) $("button").click(function() { var ipUserId = "abc"; callPage(document.getElementById("subPage1").href + "/?", { user: ipUserId }) }) 的第一个元素是一个名称而其他元素可能是测试分数,因此您应该使用一个字典,其中包含该人名的密钥和{{1}的值分数:

list

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

list

答案 3 :(得分:-1)

您拥有的是一系列记录。那是你的data

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

您的第一个问题是如何转换每条记录。正确的方法是定义转换并将其映射到记录列表中。例如,您可以像这样做第一件事:

def transform_record(lst):
  name = lst[0]
  grades = list(map(int, lst[1:]))
  grades.insert(0, name)
  return grades

print(list(map(transform_record, data)))

但也许这是一个不必要的exta步骤。你提到的第二件事是想要将最高分与每个名字联系起来。因此,您可以只提取所需的信息,而不是生成每条记录的完整转换。

def name_best(lst):
  name = lst[0]
  grades = map(int, lst[1:])
  best = max(grades)
  return (name, best)

print(list(map(name_best, data)))