在字典中添加2个列表

时间:2014-03-11 21:15:53

标签: list dictionary accounting

我一直在尝试在词典中添加2个列表的数量。问题是,我需要验证所选行和列中的值是否已经在字典中,如果是,我想将双重条目列表添加到字典中已存在的值(另一个双重条目列表)中。我使用excel电子表格+ xlrd,所以我可以阅读它。我'对此很新。

例如,代码检查指定行和列中的帐户(数字),让我们说值为10,然后如果它不在词典中,则添加2对应于此计数的值,我们将[100,0]作为此键的值。这是按预期工作的。

现在,困难的部分是帐号已经在词典中。让我们说它是帐号10的第二个条目。它是[50,20]。我想要与键相关联的值" 10"是[150,20]。

我尝试过拉链方法,但它似乎会返回radomn结果,有时它会加起来,有时它不会。

import xlrd
book = xlrd.open_workbook("Entry.xls")
print ("The number of worksheets is", book.nsheets)
print ("Worksheet name(s):", book.sheet_names())
sh = book.sheet_by_index(0)
print (sh.name,"Number of rows", sh.nrows,"Number of cols", sh.ncols)
liste_compte = {}
for rx in range(4, 10):
    if (sh.cell_value(rowx=rx, colx=4)) not in liste_compte:
        liste_compte[((sh.cell_value(rowx=rx, colx=4)))] = [sh.cell_value(rowx=rx, colx=6), sh.cell_value(rowx=rx, colx=7)]
    elif (sh.cell_value(rowx=rx, colx=4)) in liste_compte:
        three = [x + y for x, y in zip(liste_compte[sh.cell_value(rowx=rx, colx=4)],[sh.cell_value(rowx=rx, colx=6), sh.cell_value(rowx=rx, colx=7)])]
        liste_compte[(sh.cell_value(rowx=rx, colx=4))] = three
print (liste_compte)

1 个答案:

答案 0 :(得分:0)

我不会直接解开你的代码,只是帮助你做一个符合你想要的一般例子:

 def update_balance(existing_balance, new_balance):
     for column in range(len(existing_balance)):
         existing_balance[column] += new_balance[column]


 def update_account(accounts, account_number, new_balance):
     if account_number in accounts:
        update_balance(existing_balance = accounts[account_number], new_balance = new_balance)
     else:
        accounts[account_number] = new_balance

最后你做了类似的事情(假设你的xls看起来像[account_number, balance 1, balance 2]

  accounts = dict()
  for row in xls:
      update_account(accounts       = accounts, 
                     account_number = row[0],
                     new_balance    = row[1:2])