在for循环中迭代字典

时间:2020-06-16 17:53:31

标签: python python-3.x excel dictionary for-loop

所以,我基本上必须为字典创建一个for循环,该字典包含作为食品项的关键值,并且这些值是生产者。 也就是说,对于每个项目,我需要创建一个要链接到它的生产者列表。在excel表格中,我将生产者置于第一列,将项目置于第八列。 producer_w_coordinates就是我拥有的生产者列表。

例如: {'Apple':['Adam's&Co','Freddie Co.']}。 这是正确的方法吗?

item_producer_dict = dict()
item_list
for row_idx in range(3, wb_sheet.nrows): # Uncomment to run over whole sheet

producer = str(wb_sheet.cell(row_idx, 1).value) # 1 FOR COLUMN B
items = str(wb_sheet.cell(row_idx, 8).value) # 8 FOR COLUMN I
producer_list_local = producer.replace(', ',',').split(',')
for row_idx in item_list :
    if producer in producers_w_coordinates:
        item_producer_dict[row_idx] = list(set(producer))

1 个答案:

答案 0 :(得分:0)

无需先转换为set,然后再转换回list。 除非有明确的理由需要set,否则让list为您完成工作。

对于您要描述的问题,defaultdict听起来是您的最佳解决方案。 defaultdictdict,如果我们在设置之前尝试对其进行操作,则不会引发KeyError。而是将其“默认”为我们指定的类型。在这种情况下,我们将指定一个set

from collections import defaultdict

item_producer_dict = defaultdict(set)

for row_idx in range(3, wb_sheet.nrows):

    producer = str(wb_sheet.cell(row_idx, 1).value) # 1 FOR COLUMN B
    items = str(wb_sheet.cell(row_idx, 8).value) # 8 FOR COLUMN I
    producer_list_local = producer.replace(', ',',').split(',')
    for row_idx in item_list :
        if producer in producers_w_coordinates:
            item_producer_dict[row_idx].add(producer)

话虽如此,如果这是有效的代码,那么这更是https://codereview.stackexchange.com/的问题。