python - 如何从字典中提取特定的列键和值?
问题描述
我目前有一个包含键的字典,以及大约 30 列字符串和 int 格式的值。
例如:
Message: '0409-01:51:02.577'
Arguments: (['29', '30', '37', '5463', '84338', 'ABCD', 'x-abc1', 'xxx', '1A234BCD5EFG67890H1234IJ', 'ABCDEF', '02DA', '123456789', '1234567890', '1234567890', '1A234BCD5', '911', '1A234BCD5EF', '0', '12', '7', '1', '_', 'XY', 'ABC', '1A234BCDEF', 'ABCDEF', '1A234BCD', '1A234BCD', '1A234BCDDFW', 'L', '1'],)
我正在尝试`k`, `v[5]`, `v[12]`, `v[28]`, `v[25]`, `v[22`], `v[23]`, `v[9]`
按该顺序提取到新的字典或列表中。
我尝试在列表和字典之间进行更改,我尝试了一行与多行。不幸的是,我无法更改传入的字典,因为我正在从四个不同的来源提取数据来构建它。
abcdef = ('ABC', 'DEF')
incoming_files = {0409-01:51:02.577:['29', '30', '37', '5463', '84338', 'ABCD', 'x-abc1', 'xxx', '1A234BCD5EFG67890H1234IJ', 'ABCDEF', '02DA', '123456789', '1234567890', '1234567890', '1A234BCD5', '911', '1A234BCD5EF', '0', '12', '7', '1', '_', 'XY', 'ABC', '1A234BCDEF', 'ABCDEF', '1A234BCD', '1A234BCD', '1A234BCDDFW', 'L', '1']}
tc_wfiles = {}
for k, v in incoming_files.items():
if any(c in v for c in abcdef):
try:
self.tc_wfiles[k] = incoming_files[k]
self.tc_wfiles[k].append(incoming_files[k][5])
self.tc_wfiles[k].append(incoming_files[k][12])
self.tc_wfiles[k].append(incoming_files[k][28])
self.tc_wfiles[k].append(incoming_files[k][25])
self.tc_wfiles[k].append(incoming_files[k][22])
self.tc_wfiles[k].append(incoming_files[k][23])
self.tc_wfiles[k].append(incoming_files[k][9])
except IndexError:
pass
应该发生的是键,这些值被放置在新的字典或列表中。然而,我得到的是关键字段中的整行,然后是值项。
解决方案
我不确定这是否回答了您的问题,因为您没有指出正确的结果应该是什么......但如果没有别的,也许这将为您提供一些见解。
abcdef = ('ABC', 'DEF')
incoming_files = {'0409-01:51:02.577': ['29', '30', '37', '5463', '84338',
'ABCD', 'x-abc1', 'xxx',
'1A234BCD5EFG67890H1234IJ', 'ABCDEF',
'02DA', '123456789', '1234567890',
'1234567890', '1A234BCD5', '911',
'1A234BCD5EF', '0', '12', '7', '1', '_',
'XY', 'ABC', '1A234BCDEF', 'ABCDEF',
'1A234BCD', '1A234BCD', '1A234BCDDFW',
'L', '1']}
tc_wfiles = {}
for k, v in incoming_files.items():
if any(c in v for c in abcdef):
try:
tc_wfiles[k] = [k]
tc_wfiles[k].append(v[5])
tc_wfiles[k].append(v[12])
tc_wfiles[k].append(v[28])
tc_wfiles[k].append(v[25])
tc_wfiles[k].append(v[22])
tc_wfiles[k].append(v[23])
tc_wfiles[k].append(v[9])
except IndexError as exc:
print('exception:', exc)
from pprint import pprint
pprint(tc_wfiles)
输出:
{'0409-01:51:02.577': ['0409-01:51:02.577',
'ABCD',
'1234567890',
'1A234BCDDFW',
'ABCDEF',
'XY',
'ABC',
'ABCDEF']}
推荐阅读
- r - 具有时间序列的 R 代码
- r - CSV 文件输出与“read.csv()”不一致
- sonarqube - SonarQube 的安全扫描依赖项
- java - 在当前工作目录中复制文件不起作用
- javascript - 当组件不等于 home 时如何更改类而不是在 react.js 的头组件中添加类?
- javascript - php文件的代码未通过ajax调用执行
- azure-devops - Azure DevOps - 投资组合计划(测试版) - 设置和访问
- ldap - 如果 LDAP 关闭,Keycloak 能否提供替代身份验证
- python - 如何修改此 tkinter GUI 代码以包含类和方法?
- r - 以其他列中的间隔为条件创建新列