【问题标题】:construct a list with multiple dictionaries with table header and each row in pyqt5;用pyqt5中的表头和每一行构造一个包含多个字典的列表;
【发布时间】:2019-10-17 06:29:09
【问题描述】:

当我将两个 list 转换为 dict 时,我在名为“headers”的列表中获取了列标题名称,并在名为“row data”的列表中获取了每一行数据只获取唯一键值,如何获取所有重复值。

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':  ''}]

【问题讨论】:

  • @shaikmoeed.. Header 是表列名兄弟。如何获得与每一行的键相同的标题。
  • 查看答案

标签: python pyqt5


【解决方案1】:

试试这个,

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': ''}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2020-10-04
    • 2019-10-05
    • 1970-01-01
    相关资源
    最近更新 更多