python - 准确地将字典返回到元组
问题描述
我正在尝试从 a 中的tuples
各种值创建一组dict
。使用下面的示例,它一直有效,直到_10
integer
. 所以上面的任何东西_9
都会被覆盖。例如_12
变成_2
.
time = [1]
d = ({
'A1_S' : [10],
'A2_S' : [20],
'A3_S' : [30],
'A4_S' : [40],
'A5_S' : [50],
'A6_S' : [60],
'A7_S' : [70],
'A8_S' : [80],
'A9_S' : [90],
'A10_S' : [100],
'A11_S' : [110],
'A12_S' : [120],
'A13_S' : [130],
'A14_S' : [140],
'A15_S' : [150],
})
tuples = [((t, k.split('_')[0][0], int(k.split('_')[0][1]), k.split('_')[1]), v[i]) for k,v in d.items() for i,t in enumerate(time)]
输出:
[((1, 'A', 1, 'S'), 10), ((1, 'A', 2, 'S'), 20), ((1, 'A', 3, 'S'), 30), ((1, 'A', 4, 'S'), 40), ((1, 'A', 5, 'S'), 50), ((1, 'A', 6, 'S'), 60), ((1, 'A', 7, 'S'), 70), ((1, 'A', 8, 'S'), 80), ((1, 'A', 9, 'S'), 90), ((1, 'A', 1, 'S'), 100), ((1, 'A', 1, 'S'), 110), ((1, 'A', 1, 'S'), 120), ((1, 'A', 1, 'S'), 130), ((1, 'A', 1, 'S'), 140), ((1, 'A', 1, 'S'), 150)]
预期输出:
[((1, 'A', 1, 'S'), 10), ((1, 'A', 2, 'S'), 20), ((1, 'A', 3, 'S'), 30), ((1, 'A', 4, 'S'), 40), ((1, 'A', 5, 'S'), 50), ((1, 'A', 6, 'S'), 60), ((1, 'A', 7, 'S'), 70), ((1, 'A', 8, 'S'), 80), ((1, 'A', 9, 'S'), 90), ((1, 'A', 10, 'S'), 100), ((1, 'A', 11, 'S'), 110), ((1, 'A', 12, 'S'), 120), ((1, 'A', 13, 'S'), 130), ((1, 'A', 14, 'S'), 140), ((1, 'A', 15, 'S'), 150)]
解决方案
问题在这里:
int(k.split('_')[0][1]
你只在'A'之后抓取一个字符,你的意思是在'A'之后抓取所有字符直到'_'。您可以使用它来抓取所有字符,直到拆分:
int(k.split('_')[0][1:]
所以整个事情应该是:
tuples = [((t, k.split('_')[0][0], int(k.split('_')[0][1:]), k.split('_')[1]), v[i]) for k,v in d.items() for i,t in enumerate(time)]
推荐阅读
- javascript - 如何获取用户在手机上使用的浏览器版本?
- python - 拆分包含字符串的列表列表
- elasticsearch - 从 Jira 获取数据到 Elasticsearch
- java - C# 等效于 Javas Guavas Maps.uniqueIndex
- angular - AngularFire - 如何在集合查询中显示 Firestore 键和值
- java - 字段需要一个类型的 bean ... 无法找到
- amazon-web-services - AWS Batch:我们如何知道订购批处理作业正在使用哪个计算环境
- android - 如何自定义 Firebase 应用内消息?
- java - 遇到此问题 *使用 -Xlint 重新编译:未选中以获取详细信息。*
- reactjs - Material-UI 更改默认颜色