python - 在字典列表中将一些 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
解决方案
尝试这个。
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'}]