首页 > 解决方案 > 从列表中为每个键创建多个值的字典

问题描述

我们需要从名为 Initial_inventory-1.txt 的同一个文本文件中创建两个字典,一个用于价格,另一个用于数量。两个字典都将产品名称作为字典中的键。

我的输出给出了一个字典,其中包含名称、价格,然后是名称的第一个字母,我不知道为什么。两个字典都会发生这种情况。

def read_file(file_name, prices, quantities):
    file = open(file_name, 'r')

    for line in file:
        product = line.strip('\n').split(';')
        name, price = product[0], product[1]
        prices[name] = price
        for price in product[0]:
            prices.setdefault(price, []).append(name)
        name, quantity = product[0], product[2]
        quantities[name] = quantity
        for quantity in product[0]:
            quantities.setdefault(quantity, []).append(name)
        
            
    print(prices)
    print(quantities)
    

主功能:

def main():
    #init dictionaries
    prices = {}
    quantities = {}
    #read_file
    read_file("initial_inventory-1.txt", prices, quantities)
main()

任务还有更多内容,这就是为什么它们在这些功能中,我无法摆脱它们。先感谢您!

标签: pythonloopsfiledictionary

解决方案


product[0]是产品名称,它是一个字符串。当您迭代它时,您正在迭代名称中的字符。

prices和字典的键quantities应该是name. 您应该将其用作setdefault(). 您不应该首先分配给字典,这是用这个价格和数量替换价格和数量列表。

def read_file(file_name, prices, quantities):
    file = open(file_name, 'r')

    for line in file:
        name, price, quantity = line.strip('\n').split(';')
        prices.setdefault(name, []).append(price)
        quantities.setdefault(name, []).append(quantity)
        
            
    print(prices)
    print(quantities)

推荐阅读