Python 字符串 2d 列表到混合 int/string 列表
Python string 2d list to mixed int/string list
得到这个列表:
test_list = [['1', '350', 'apartment'], ['2', '300', 'house'], ['3', '300', 'flat'], ['4', '250', 'apartment']]
正在尝试获得像
这样的混合列表
test_list = [[1, 350, 'apartment'], [2, 300, 'house'], [3, 300, 'flat'], [4, 250, 'apartment']]
到目前为止我的尝试:
res = [list(map(lambda ele : int(ele) if ele.isdigit()
else ele, test_list)) for ele in test_list ]
但似乎没有用。
你的变量有一个小问题。
在此修复中,test_list
是整个列表,ele
是 ['1', '350', 'apartment']
,x
是其中的一个字符串。
[list(map(lambda x: int(x) if x.isdigit() else x, ele)) for ele in test_list]
但最好使用列表理解而不是 list(map(
:
[[int(x) if x.isdigit() else x for x in ele] for ele in test_list]
更好:字典列表或元组列表会更合适。列表通常是元素的集合,每个元素没有特定的作用。
[{'id': int(id), 'price': int(price), 'name': name} for id, price, name in test_list]
[(int(id), int(price), name) for id, price, name in test_list]
如果第三个项目(在我的示例中为名称)被随机称为“123”,也会阻止您将其转换为整数。
如果您已经知道每个子列表的位置都是正确的,为什么还要使用地图
res = [[int(x), int(y), z] for x, y, z in test_list]
结果
[[1, 350, 'apartment'], [2, 300, 'house'], [3, 300, 'flat'], [4, 250, 'apartment']]
或者更好,因为这最终可能是字典使用字典理解:
res = {int(i): {'price': int(p), 'name': n} for i, p, n in test_list}
结果
{1: {'price': 350, 'name': 'apartment'}, 2: {'price': 300, 'name': 'house'}, 3: {'price': 300, 'name': 'flat'}, 4: {'price': 250, 'name': 'apartment'}}
试试这个:
test_list = [[int(ele) if ele.isdigit() else ele for ele in elem ] for elem in test_list]
得到这个列表:
test_list = [['1', '350', 'apartment'], ['2', '300', 'house'], ['3', '300', 'flat'], ['4', '250', 'apartment']]
正在尝试获得像
这样的混合列表test_list = [[1, 350, 'apartment'], [2, 300, 'house'], [3, 300, 'flat'], [4, 250, 'apartment']]
到目前为止我的尝试:
res = [list(map(lambda ele : int(ele) if ele.isdigit()
else ele, test_list)) for ele in test_list ]
但似乎没有用。
你的变量有一个小问题。
在此修复中,test_list
是整个列表,ele
是 ['1', '350', 'apartment']
,x
是其中的一个字符串。
[list(map(lambda x: int(x) if x.isdigit() else x, ele)) for ele in test_list]
但最好使用列表理解而不是 list(map(
:
[[int(x) if x.isdigit() else x for x in ele] for ele in test_list]
更好:字典列表或元组列表会更合适。列表通常是元素的集合,每个元素没有特定的作用。
[{'id': int(id), 'price': int(price), 'name': name} for id, price, name in test_list]
[(int(id), int(price), name) for id, price, name in test_list]
如果第三个项目(在我的示例中为名称)被随机称为“123”,也会阻止您将其转换为整数。
如果您已经知道每个子列表的位置都是正确的,为什么还要使用地图
res = [[int(x), int(y), z] for x, y, z in test_list]
结果
[[1, 350, 'apartment'], [2, 300, 'house'], [3, 300, 'flat'], [4, 250, 'apartment']]
或者更好,因为这最终可能是字典使用字典理解:
res = {int(i): {'price': int(p), 'name': n} for i, p, n in test_list}
结果
{1: {'price': 350, 'name': 'apartment'}, 2: {'price': 300, 'name': 'house'}, 3: {'price': 300, 'name': 'flat'}, 4: {'price': 250, 'name': 'apartment'}}
试试这个:
test_list = [[int(ele) if ele.isdigit() else ele for ele in elem ] for elem in test_list]