【问题标题】:How can I add a certain cell to its respective column/row如何将某个单元格添加到其各自的列/行
【发布时间】:2022-11-23 18:22:58
【问题描述】:

我有一个看起来像这样的 Excel 文件

对于每个名字,我想为每个组添加相应的单元格。所以我希望一个 for 循环迭代 +4 行来遍历所有名称。

这是我到目前为止所做的:

import openpyxl

 doc = openpyxl.load_workbook('World Cup Bet Tournament.xlsx')

 doc_activation = doc.active

 ############################################
 """ Creating the final dictionary """
 final_dict = {}
 groups_dict = {}
 group_list = []
 ############################################

 for row_1 in range(2, 42):
     for col_1 in doc_activation.iter_cols(1, 1):
         name = col_1[row_1].value
         if name is None:
             break
         else:
             final_dict[name] = groups_dict
             for row_2 in range(1, 2):
                 for col_2 in doc_activation.iter_cols(2, 9):
                     group = col_2[row_2].value
                     groups_dict[group] = group_list


  print(final_dict)

和输出:

{'1. Mathias L.R': {'GROUP A': [], 'GROUP B': [], 'GROUP C': [], 'GROUP D': [], 'GROUP E': [], 'GROUP F': [], 'GROUP G': [], 'GROUP H': []}, '2. Noah L.R': {'GROUP A': [], 'GROUP B': [], 'GROUP C': [], 'GROUP D': [], 'GROUP E': [], 'GROUP F': [], 'GROUP G': [], 'GROUP H': []}, '3. Jessy P.N': {'GROUP A': [], 'GROUP B': [], 'GROUP C': [], 'GROUP D': [], 'GROUP E': [], 'GROUP F': [], 'GROUP G': [], 'GROUP H': []}, '4. Enzo B.': {'GROUP A': [], 'GROUP B': [], 'GROUP C': [], 'GROUP D': [], 'GROUP E': [], 'GROUP F': [], 'GROUP G': [], 'GROUP H': []}, '5. Savio M.': {'GROUP A': [], 'GROUP B': [], 'GROUP C': [], 'GROUP D': [], 'GROUP E': [], 'GROUP F': [], 'GROUP G': [], 'GROUP H': []}, '6. Jonathan M.': {'GROUP A': [], 'GROUP B': [], 'GROUP C': [], 'GROUP D': [], 'GROUP E': [], 'GROUP F': [], 'GROUP G': [], 'GROUP H': []}, '7. Hans M.': {'GROUP A': [], 'GROUP B': [], 'GROUP C': [], 'GROUP D': [], 'GROUP E': [], 'GROUP F': [], 'GROUP G': [], 'GROUP H': []}, '8. J-E': {'GROUP A': [], 'GROUP B': [], 'GROUP C': [], 'GROUP D': [], 'GROUP E': [], 'GROUP F': [], 'GROUP G': [], 'GROUP H': []}, '9. Schadrac ': {'GROUP A': [], 'GROUP B': [], 'GROUP C': [], 'GROUP D': [], 'GROUP E': [], 'GROUP F': [], 'GROUP G': [], 'GROUP H': []}, '10. Mathieu G.': {'GROUP A': [], 'GROUP B': [], 'GROUP C': [], 'GROUP D': [], 'GROUP E': [], 'GROUP F': [], 'GROUP G': [], 'GROUP H': []}}

因此,对于代表名称的每个键,它的值是一个字典,而该字典的键是每个组的名称。它的值是一个列表,其中包含与玩家相关的每个国家/地区。

【问题讨论】:

    标签: python excel list dictionary openpyxl


    【解决方案1】:

    您只想从单元格中的值构建您的用户组,然后将其添加到以组名作为键的组字典中,例如GROUPA、GROUPB 等然后添加到用户名下的整个字典中。
    查看示例代码

    import openpyxl
    
    
    doc = openpyxl.load_workbook('World Cup Bet Tournament.xlsx')
    doc_activation = doc.active
    
    max_rows = doc_activation.max_row
    max_cols = doc_activation.max_column
    
    group, name = '', ''
    groupdict, userdict = {}, {}
    group_name_offset = 3
    
    for min_row in range(2, max_rows+1, 4):
        group_name_offset -= 4
        for column_list in doc_activation.iter_cols(min_col=2, max_col=max_cols, min_row=min_row, max_row=min_row+3):
            group_list = []
            for count, cell in enumerate(column_list, 1):
                if count == 1:
                    group = cell.offset(row=group_name_offset).value.replace(" ", "")
                    if cell.column_letter == 'B':
                        name = cell.offset(column=-1).value
                        groupdict = {}
                group_list.append(cell.value)
            groupdict[group] = group_list
            userdict[name] = groupdict
    
    
    ### Print the User's groups
    for name, groups in userdict.items():
        print(name)
        for key, teams in groups.items():
            print(f'{key} : {teams}')
    

    输出

    1. Mathias L.R
    GROUPA : ['1. Pays-Bas', '2. Sénégal', '3. Équateur', '4. Qatar']
    GROUPB : ['1. Angleterre', '2. Pays de Ga', '3. États-Unis', '4. Iran']
    GROUPC : ['1. Argentine', '2. Pologne', '3. Mexique', '4. Arabie Saou']
    GROUPD : ['1. Danemark', '2. France', '3. Tunisie', '4. Australie']
    GROUPE : ['1. Espagne', '2. Allemagne', '3. Japon', '4. Costa Rica']
    GROUPF : ['1. Belgique', '2. Canada', '3. Croatie', '4. Maroc']
    GROUPG : ['1. Brésil', '2. Cameroun', '3. Serbie', '4. Suisse']
    GROUPH : ['1. Portugal', '2. Ghana', '3. Uruguay', '4. Corée du Su']
    2. Noah L.R
    GROUPA : ['1. Pays-Bas', '2. Sénégal', '3. Équateur', '4. Qatar']
    GROUPB : ['1. Angleterre', '2. États-Unis', '3. Pays de Ga', '4. Iran']
    GROUPC : ['1. Argentine', '2. Mexique...
    

    【讨论】:

      猜你喜欢
      • 2017-08-13
      • 1970-01-01
      • 2012-02-25
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 2019-08-10
      • 1970-01-01
      相关资源
      最近更新 更多