尝试使用python更改与字典中的键相关联的值,而不是返回正确的输出
def fetchAndReplace(dictionary,key,newValue):
keys = dictionary.keys()
for i in keys:
if i == key:
print dictionary[key]
dictionary[key] = newValue
return
else:
return "Nothing"
当我把这个称为字典{'x':3,'y':2}时,x表示键,6表示newValue 它返回的字符串没有,它不应该。我发现我的代码没有任何问题,所以如果你能指出我忽略的错误,我会很感激。
答案 0 :(得分:3)
问题是你是return
第一次迭代,所以你永远不会得到第二个密钥。
试试这个:
def fetchAndReplace(dictionary, key,newValue):
keys = dictionary.keys()
for i in keys:
if i == key:
dictionary[key] = newValue
return dictionary
print fetchAndReplace({'x':3,'y':2}, 'x', 6)
输出:
{'y': 2, 'x': 6}
此外,您可以使用dict.update
方法完成与函数相同的操作:
>>> mydict = {'x':3,'y':2}
>>> mydict.update({'x': 6})
>>> print mydict
{'y': 2, 'x': 6}
H个,
亚伦
答案 1 :(得分:2)
我认为你正试图按照以下方式做点什么:
def fetchAndReplace(dictionary,key,newValue):
if key in dictionary:
dictionary[key]=newValue
return dictionary
else:
return 'Nothing'
di= {'x':3,'y':2}
print fetchAndReplace(di, 'z', 6)
print fetchAndReplace(di, 'x', 6)
打印:
Nothing
{'y': 2, 'x': 6}
答案 2 :(得分:0)
打印语句总是有帮助
def fetchAndReplace(dictionary,key,newValue):
keys = dictionary.keys()
print 'keys:', keys
for i in keys:
print 'i:', i, 'i == key:', i == key
if i == key:
print dictionary[key]
dictionary[key] = newValue
return
else:
return "Nothing"
字典中的项几乎任意有序,如果条件语句if i == key
因键中的第一项失败,函数将返回
答案 3 :(得分:0)
我很想回答这个问题。
您只需要删除两个制表符(如果使用空格,则为8),以使代码正常工作。
减少else:
和return "Nothing"
的缩进
结果:
def fetchAndReplace(dictionary, key, newValue):
keys = dictionary.keys()
for i in keys:
if i == key:
print dictionary[key]
dictionary[key] = newValue
return
else:
return "Nothing"
dictionary = {"x":1, "y":2}
print "The result is: " + str(fetchAndReplace(dictionary,"x",3))
print "The result is: " + str(fetchAndReplace(dictionary,"z",0))
这将产生:
1 The result is: None The result is: Nothing
为什么呢?因为通过减少缩进,else
将附加到for
,并且根据此documentation,else
中的for..else
部分将仅在for
循环正常退出(即没有break
或return
),这就是为什么它将遍历所有条目,并且只有在找不到密钥时,它才会返回字符串“没有”。否则它将返回None
,因为您只有语句return
。
但正如其他人注意到的那样,你可能会想要这样的东西:
def fetchAndReplace(dictionary, key, newValue):
result = dictionary.get(key, "Nothing")
dictionary[key] = newValue
return result
哪个逻辑用于将dictionary[key]
的原始值保存在变量result
中,如果该密钥不可用,则会为其分配值Nothing
。然后,您将该密钥的值替换为dictionary[key] = newValue
,然后返回result
。
运行此代码:
dictionary = {"x":1, "y":2}
print "The result is: " + fetchAndReplace(dictionary,"x",3)
print "The result is: " + fetchAndReplace(dictionary,"z",0)
将产生
The result is: 1 The result is: Nothing
答案 4 :(得分:0)
似乎你想在没有字典的情况下进行计划。但是,您已经创建了一个。拿出没有回报。