所以,我基本上必须为字典创建一个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))
答案 0 :(得分:0)
无需先转换为set
,然后再转换回list
。
除非有明确的理由需要set
,否则让list
为您完成工作。
对于您要描述的问题,defaultdict
听起来是您的最佳解决方案。
defaultdict
是dict
,如果我们在设置之前尝试对其进行操作,则不会引发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/的问题。