簡體   English   中英

如何從字典中提取特定的列鍵和值?

[英]How to extract specific column keys and values from a dictionary?

我目前有一個包含密鑰的字典,以及大約30列的string和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']}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM