为了账号安全,请及时绑定邮箱和手机立即绑定

用pyqt5中的表头和每一行构造一个包含多个字典的列表;

用pyqt5中的表头和每一行构造一个包含多个字典的列表;

泛舟湖上清波郎朗 2022-06-28 10:10:54
我在名为“headers”的列表中获取了列标题名称,在名为“row data”的列表中获取了每一行数据,当我将两个转换为时,list我dict没有得到所有这些值,而是只得到唯一的键值,如何获取所有重复值。headers=['Filter1', 'Filter2', 'Filter3', 'SchemaName1', 'Filter1', 'Filter2', 'Filter3', 'SchemaName1', 'Filter1', 'Filter2', 'Filter3', 'SchemaName1', 'Filter1', 'Filter2', 'Filter3', 'SchemaName1', 'Filter1', 'Filter2', 'Filter3', 'SchemaName1']rowdata=['US_CO', 'US_COM', 'US_DO', 'public', 'US_CO', 'US_COM', 'US_DO', 'publicss', '', '', '', '', '', '', '', '', '', '', '', '']def savedata_click(self):    headers = []    rowdata = []    for row in range(self.table.rowCount()):        for column in range(self.table.columnCount()):            item = self.table.item(row, column)            if item is not None:                rowdata.append(item.text())            else:                rowdata.append('')            header = self.table.horizontalHeaderItem(column)            if header is not None:                headers.append(header.text())            else:                headers.append("Column " + str(column))     res= dict(zip(headers,rowdata))     print(res)output:{'Filter1':  '', 'Filter2':  '', 'Filter3':  '', 'SchemaName1':  ''}expected:[{'Filter1':  'US_CO', 'Filter2':  'US_COM', 'Filter3':  'US_DO', 'SchemaName1':  'public'},{'Filter1':  'US_CO', 'Filter2':  'US_COM', 'Filter3':  'US_DO', 'SchemaName1':  'publicss'},{'Filter1':  '', 'Filter2':  '', 'Filter3':  '', 'SchemaName1':  ''},{'Filter1':  '', 'Filter2':  '', 'Filter3':  '', 'SchemaName1':  ''}]
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

尝试这个,


headers=['Filter1', 'Filter2', 'Filter3', 'SchemaName1', 'Filter1', 'Filter2', 'Filter3', 'SchemaName1', 'Filter1', 'Filter2', 'Filter3', 'SchemaName1', 'Filter1', 'Filter2', 'Filter3', 'SchemaName1', 'Filter1', 'Filter2', 'Filter3', 'SchemaName1']

rowdata=['US_CO', 'US_COM', 'US_DO', 'public', 'US_CO', 'US_COM', 'US_DO', 'publicss', '', '', '', '', '', '', '', '', '', '', '', '']

>>> final_list = []      

>>> header_length = 4 # Number of columns

>>> _splitted_dict_list = [{k:v} for k,v in zip(headers, rowdata)]           

>>> for v in range(0, len(_splitted_dict_list), header_length):

    final_list.append({nk:nv for nested_dict in _splitted_dict_list[v:v+4] for nk,nv in nested_dict.items()})

输出:


>>> final_list


[{'Filter1': 'US_CO','Filter2': 'US_COM','Filter3': 'US_DO','SchemaName1': 'public'},

 {'Filter1': 'US_CO','Filter2': 'US_COM','Filter3': 'US_DO','SchemaName1': 'publicss'},

 {'Filter1': '', 'Filter2': '', 'Filter3': '', 'SchemaName1': ''},

 {'Filter1': '', 'Filter2': '', 'Filter3': '', 'SchemaName1': ''},

 {'Filter1': '', 'Filter2': '', 'Filter3': '', 'SchemaName1': ''}]


查看完整回答
反对 回复 2022-06-28
  • 1 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号