【发布时间】:2019-03-04 11:58:37
【问题描述】:
我想用 None 值替换字典中具有“not_recorded”值的每个值。
字典:
data = {'Date' : ['3-Mar', '20-Mar', '20-Apr', '21-Apr', '29-Apr', '7-May', '30-May', '31-May', '7-Jun', '16-Jun',
'1-Jul', '2-Jul', '10-Jul'],
'Site_1' : [0.5840, 0.8159, 0.7789, 0.7665, 0.8510, 0.7428, 'not_recorded', 0.6820, 0.8714, 0.8902, 'not_recorded', 0.8289, 0.6877],
'Site_2' : [0.6196, 0.8291, 0.7686, 0.7848, 0.9935, 0.7406, 'not_recorded', 0.6952, 0.6952, 0.6952, 'not_recorded', 0.8119, 'not_recorded']}
我做错了什么?
def replace_string_with_None(value_to_find, value_for_replacing):
for value in data.values():
if value == value_to_find:
data[value] = value_for_replacing
replace_string_with_None("not_recorded", None)
print(data)
【问题讨论】:
-
您不能通过字典的值来访问字典。改用它的键。
-
'for' 循环将 'value' 变量设置为列表之一,而不是列表中的项目。您可以通过将“for”循环的主体替换为“打印值”来检查这一点。因此,您需要另一个内部循环(或者最好是列表理解)来遍历列表进行替换。此外,您确实应该将数据作为参数传递给函数。
-
@meowgoesthedog 这不是真的,您绝对可以通过这种方式访问字典中的值。这就是 .values() 方法的用途。
-
@SimonHibbs 好的,那么也许我应该改写 - 访问字典 by 它的值是没有意义的(即使如果某些值相等,这可能会起作用巧合的钥匙)
-
@SimonHibbs 我不确定您要表达什么观点——OP 还必须 更新 值,而这在不使用相应键的情况下是不可能的。无论如何,我只是想说当
value是data.values()的一部分时写data[value]是没有意义的。
标签: python function dictionary