【问题标题】:iterating over dictionaries in for loop在 for 循环中迭代字典
【发布时间】:2020-06-16 17:53:31
【问题描述】:

所以,我基本上必须为字典创建一个 for 循环,其中包含作为一个食物项目的键值,而这些值是生产者。 也就是说,对于每个项目,我需要创建一个要链接到它的生产者列表。在 excel 表中,我将生产者放在第 1 列,将项目放在第 8 列。 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))

【问题讨论】:

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


    【解决方案1】:

    无需转换为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/ 来说更像是一个问题。

    【讨论】:

    • 嘿!这似乎是对的!我会尝试这样做。谢谢!
    • 嘿!我刚试过。我的 anaconda 导航器的问题是它在运行编码器的 sn-p 时显示一个“*”符号,我真的不知道为什么会这样。
    猜你喜欢
    • 2020-04-08
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 2019-12-31
    • 2023-03-15
    • 2021-06-30
    相关资源
    最近更新 更多