python - python字典分配错误的键
问题描述
我正在使用 python docx 从 word 文档表中提取测试,我正在循环多个 docx 文件。数据以字典列表的形式出现。我遇到的问题是字典列表已将一些键分配为值,将一些值分配为键。我正在尝试找到一种重新分配键和值的方法
这是当前字典的示例:
[
{'Title': 'Purpose', 'Analysis of Data ':'To analyze data'},
{'Title': 'test data', 'Analysis of Data ':'To analyze data'}
]
逗号前面的两个字符串应该是键,逗号后面的两个字符串应该是值
那么我可以如何重新排列这些字典列表,使它们看起来像下图?
[
{'Title': 'Analysis of Data ', 'Purpose': 'To analyze data'},
{'Title': 'test data', 'Purpose': 'To analyze data'}
]
代码(根据评论调整):
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
解决方案
正如所评论的,最好从源头解决这个问题。
但无论如何,这可能有助于“重新安排”:
基本上我们有:input = {'A': 'B', 'C':'D'}
我们想要:output = {'A':'C', 'B':'D'}
dicts.items()
中有一个属性:
返回字典中的键值对列表。
所以我们可以这样做:
Given:
d = {'A': 'B', 'C':'D'}
>> list(d.items())
>> [('A', 'B'), ('C','D')]
So we could do something like:
>> list(d.items())[0][1]
>> 'C'
有了这个我们可以检索任何键或值,所以现在我们可以尝试重新排列它。
所以我概括了 .items() 部分并用这种方法重新排列它:
def arrange_dict(input):
for i in range(len(input)):
for j in range(len(input)):
if j == len(input):
break
value = list(input.items())[i][j]
if i != j:
if i < j:
new_key = value
next_val = list(input.items())[i+1][j]
input.update({new_key:next_val})
else:
input.pop(value)
new_val = value
prev_key = list(input.items())[i-1][j]
input.update({prev_key:new_val})
现在您可以像这样安排列表中的每个字典:
for dict in list:
arrange_dict(dict)
希望它有所帮助,如果有人可以重构它,请随时发布;)
推荐阅读
- android - NDK 版本的 Gradle 构建错误 - ndk.dir 版本与 android.ndkVersion 不一致
- php - Windows 2016 服务器上的 PHP 代码 - JSON 似乎没有运行 (IIS)
- python - Pydrake:关于离散时间模拟中的渗透
- javascript - 如何在不中断其正常工作的情况下触发 ChartJS 图例 onClick
- laravel - 如何在mysql中显示产品表中的随机产品
- azureservicebus - ServiceBusProcessorClient 是否可以接收延迟消息?
- c# - 在 C# 中从流中创建缩略图
- javascript - Highcharts 上下文按钮放置在图例顶部的图例旁边
- python - 使用 Selenium python 上传图像不起作用
- php - 使用 mysqli 和准备好的语句我想返回列结果