Python 添加另一个条目时,字典被覆盖

Python 添加另一个条目时,字典被覆盖,python,dictionary,Python,Dictionary,我有一个创建字典的函数 def Bowler_creator (Name): """ This function will create the dictionaries for the batting player """ global bowler; bowler = { Name : { "number_of_overs":0.0, "number_of_runs":0,

我有一个创建字典的函数

def Bowler_creator (Name): 

    """
    This function will create the dictionaries for the batting player

    """
    global bowler;
    bowler =    { 
            Name : { "number_of_overs":0.0,
                    "number_of_runs":0,
                    "number_of_wickets":0,
                    'economy_rate':0.0,
                    'Maiden overs':0
                    },

                }
Current_Bowler = input("Enter the bowler's name\n");

Bowler_creator(Current_Bowler);
Bowler_creator('jafda');
我的想法是,我将像下面那样调用这个函数,以便为这个字典创建具有相同输入值的新键

def Bowler_creator (Name): 

    """
    This function will create the dictionaries for the batting player

    """
    global bowler;
    bowler =    { 
            Name : { "number_of_overs":0.0,
                    "number_of_runs":0,
                    "number_of_wickets":0,
                    'economy_rate':0.0,
                    'Maiden overs':0
                    },

                }
Current_Bowler = input("Enter the bowler's name\n");

Bowler_creator(Current_Bowler);
Bowler_creator('jafda');
所以按照我的想法,字典应该创建两个元素,两个键分别是
Current\u Bowler
jafda
,但在我尝试打印字典后,它只返回最新的一个。你能告诉我为什么我的字典会被一个新的键覆盖吗?

你每次都会用一个全新的字典替换字典

您应该创建一次字典,然后添加关键字:

bowler = {}

def Bowler_creator (Name): 
    bowler[Name] = {
        "number_of_overs":0.0,
        "number_of_runs":0,
        "number_of_wickets":0,
        'economy_rate':0.0,
        'Maiden overs':0
    }

注意:由于该函数不再需要将新对象分配给
bowler
,因此也不需要将其标记为全局对象。直接指定给键会直接修改全局字典。

每次在函数
中创建新字典时,您都会创建一个新字典。
试着做

bowler[Name] = { "number_of_overs":0.0,
                    "number_of_runs":0,
                    "number_of_wickets":0,
                    'economy_rate':0.0,
                    'Maiden overs':0
               }

您每次都在创建一个新词典。。。你的意思是
bowler[Name]={…}
这样字典就不会告诉我们它正在被替换,为了有一个新的条目,我们必须像bowler[Name]={}那样开始,明白了吗it@SaiKoti:您通过为保龄球手分配其他内容来绑定它<代码>保龄球手=…
。那个表达式碰巧指定了一本全新的词典。通过指定一个键,您只替换该键的值,而不是整个字典。@SaiKoti:否则,很高兴能提供帮助!如果您觉得它对您有用,请随时使用。:-)嗨,阿法克,你的答案本身就包含了字典里的键值,没问题,这也很有帮助