这就是我所拥有的:
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:unhashable类型:'dict' - 我想要的是更新价格字典,如{符号:买价,卖价,符号2:买价,卖价等}}
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()
对编程不熟悉我不完全确定如何解决这个问题。谢谢你的帮助!
答案 0 :(得分:1)
您的AddSymbol
会返回Names
,这是字典。字典不能用作字典键。
只需在return stock_symbol
中使用AddSymbol
。
答案 1 :(得分:1)
在AddSymbol(company_name)
中,您将返回整个Names
字典。然后将整个字典传递到AddPrices
函数中。 AddPrices
意味着将一个股票代码传递给它(str
),但您传递的是dict
。您可以修改AddSymbol
以返回stock_symbol
而不是Names
。
我还建议您的函数名称是驼峰式的,以小写字母开头,并将每个单词的首字母大写。这是大多数程序员为保持一致性而做的事情,并且养成良好的习惯是好的。
答案 2 :(得分:0)
也许您在AddSymbol
函数中返回的意思是符号而不是另一个字典?在这种情况下,您可以:
def AddSymbol(company_name):
stock_symbol = input("Please enter a stock symbol: ")
Names[stock_symbol] = company_name
return stock_symbol