在两个字典中使用相同的键(Python)

在两个字典中使用相同的键(Python),python,hash,dictionary,key,Python,Hash,Dictionary,Key,以下是我所拥有的: from pprint import pprint Names = {} Prices = {} Exposure = {} def AddName(): company_name = input("Please enter company name: ") return company_name def AddSymbol(company_name): stock_symbol = input("Please enter a stock sym

以下是我所拥有的:

from pprint import pprint

Names = {}
Prices = {}
Exposure = {}

def AddName():
    company_name = input("Please enter company name: ")
    return company_name

def AddSymbol(company_name):
    stock_symbol = input("Please enter a stock symbol: ")
    Names[stock_symbol] = company_name
    return Names
^^这会将名称字典更新为{symbol:company name}

def AddPrices(stock_symbol):
    buy = float(input("Please enter buying price of stock: "))
    sell = float(input("Please enter current price of stock: "))
    Prices[stock_symbol] = buy, sell
    return Prices
^^这将生成一个TypeError:Unhabable类型:“dict”-我希望它更新价格字典,如{symbol:buy price,sell price,symbol2:buy price,sell price等..}

def printDicts(Names, Prices):
    '''
    For debug purposes, prints out contents of dictionaries
    '''
    print( "Names is now:" )
    pprint(Names)

    print("Prices now:")
    pprint(Prices)



def main():
    company_name = AddName()
    stock_symbol = AddSymbol(company_name)
    AddPrices(stock_symbol)
    printDicts(Names, Prices)

main()

作为编程新手,我不完全确定如何解决这个问题。谢谢你的帮助

您的
AddSymbol
返回
名称
,即字典。字典不能用作字典键

只需在
AddSymbol
中使用
return stock\u symbol

AddSymbol(公司名称)
中返回整个
名称
字典即可。然后将整个字典传递到
AddPrices
函数中
AddPrices
意味着向其中传递一个股票符号(a
str
),但您传递的是一个
dict
。您可以修改
AddSymbol
以返回
stock\u symbol
,而不是
名称


我还建议您的函数名采用驼峰式大小写,以小写字母开头,每个单词的第一个字母大写。这是大多数程序员为保持一致性而做的事情,养成良好的习惯是很好的。

也许您想在
AddSymbol
函数中返回的是符号,而不是另一个字典?在这种情况下,您可以:

def AddSymbol(company_name):
    stock_symbol = input("Please enter a stock symbol: ")
    Names[stock_symbol] = company_name
    return stock_symbol

杰出的现在效果很好!谢谢你提供的关于我名字格式的信息。