首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改元组元素的数据类型(PYTHON)

更改元组元素的数据类型(PYTHON)
EN

Stack Overflow用户
提问于 2020-09-13 04:53:05
回答 3查看 43关注 0票数 0

我正在从csv文件中读取数据并将其转换为元组,

代码语言:javascript
复制
text = open('States.csv').read()
lines= text.splitlines()
data= [tuple(line.split(',')) for line in lines[1:]]
data

作为回报,我会打印出我的元组,当前所有数据都是字符串形式的:

代码语言:javascript
复制
[ ('Boston', 'MA', '20489', '19715', '23610', '9.9', '401', '15.6', '4499.63'),
    ('Trenton', 'NJ', '26835', '26573', '25113', '9.9', '345', '23', '552.13') ]

我需要元素2-4 (波士顿的20489,19715,23610和特伦顿的26835,26573,25113 )是整数,5-8要写成浮点数,我该怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-09-13 05:03:04

你可以:

代码语言:javascript
复制
types = (str, str, int, int, int, float, float, float, float)

然后更改您的:

代码语言:javascript
复制
data= [tuple(line.split(',')) for line in lines[1:]]

至:

代码语言:javascript
复制
data = [tuple([t(val) for t, val in zip(types, line.split(','))])
        for line in lines[1:]]

尝试使用这些行(在标题行之后):

代码语言:javascript
复制
Boston,MA,20489,19715,23610,9.9,401,15.6,4499.63
Trenton,NJ,26835,26573,25113,9.9,345,23,552.13

给出了data的值

代码语言:javascript
复制
[('Boston', 'MA', 20489, 19715, 23610, 9.9, 401.0, 15.6, 4499.63),
 ('Trenton', 'NJ', 26835, 26573, 25113, 9.9, 345.0, 23.0, 552.13)]
票数 0
EN

Stack Overflow用户

发布于 2020-09-13 04:59:35

首先,尝试将元组转换为list.Modify,然后更改为所需的元组。元组是不可变的。

票数 0
EN

Stack Overflow用户

发布于 2020-09-13 05:07:34

另一种解决方案:

代码语言:javascript
复制
data = [ ('Boston', 'MA', '20489', '19715', '23610', '9.9', '401', '15.6', '4499.63'),
         ('Trenton', 'NJ', '26835', '26573', '25113', '9.9', '345', '23', '552.13') ]

new_t = [(*t[:2], *map(int, t[2:5]), *map(float, t[5:9])) for t in data]
print(new_t)

打印:

代码语言:javascript
复制
[('Boston', 'MA', 20489, 19715, 23610, 9.9, 401.0, 15.6, 4499.63), 
 ('Trenton', 'NJ', 26835, 26573, 25113, 9.9, 345.0, 23.0, 552.13)]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63864863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档