首页 > 解决方案 > 在字典列表中将一些 python 字典键重新分配为值,将其他值重新分配为键

问题描述

我有一个字典列表(old_list),我正在尝试将一些键重新分配为值,将一些值重新分配为键。背后的故事是我正在使用 python docx,我正在循环浏览文件夹中的 docx 文件,并从该文件夹中的所有 docx 文件中提取表中的数据。数据作为字典列表加载,但将一些键分配为值,将一些值分配为键。我希望旧列表看起来像(参见 new_list)。似乎表格文档的结构是文本以这种方式加载的原因。我不拥有这些文档,因此我无法更改表格的结构。所以我唯一的选择是修复字典列表。有办法吗?

old_list = [{"A":"B" , "C":"D"},{"D":"E" , "F":"G"}]

new_list = [{"A":"C" , "B":"D"},{"D":"F" , "E":"G"}]

下面是我用来从文档文件中提取数据的代码供参考

import Docx

data_t = []
def getTable(filename): 
    document = Document(filename)
    table = document.tables[0]
    keys = None
    for i, row in enumerate(table.rows): 
        text = (cell.text for cell in row.cells) 
        if i == 0: 
            keys = tuple(text) 
            continue 
        row_data = dict(zip(keys, text)) 
        data_t.append(row_data) 

path = (r'C:\Users\OyooP\Desktop\auto1*.docx')
files=glob.glob(path) 
table_list = [] 
for f in files: 
    tbl_corpus = getTable(f) 
    table_list.append(tbl_corpus) 

corpus_list[0] 
data_t 

标签: pythonlistdictionarypython-docx

解决方案


尝试这个。

old_list =  [{"A":"B" , "C":"D"},{"D":"E" , "F":"G"}]

for i, (a,b) in enumerate(old_list):
    _temp = old_list[i][a] 
    old_list[i][a] = b
    old_list[i][_temp] = old_list[i][b]
    del old_list[i][b]

输出:

[{'A': 'C', 'B': 'D'}, {'D': 'F', 'E': 'G'}]

推荐阅读