【发布时间】:2020-05-15 15:31:32
【问题描述】:
在以下字典中,用户可以将键作为变量来定义另一个值:
d = {'a_key': 'a_value', 'b_key': 'a_key+1'}
我必须用相应的值替换这些引用,以获得所需的输出:
d = {'a_key': 'a_value', 'b_key': 'a_value+1'}
我认为这很容易,但是这几个小时后就发疯了。我得到了这个代码:
for k in d.keys():
print("key: " + k)
print("value: " + d[k])
for v in d.values():
print("value_before: " + v)
v = v.replace(k, d[k])
print("value_after: " + v)
print(d)
输出是:
key: a_key
value: a_value
value_before: a_value
value_after: a_value
value_before: a_key+1
value_after: a_value+1
key: b_key
value: a_key+1 # WHY??
value_before: a_value
value_after: a_value
value_before: a_key+1
value_after: a_key+1
{'a_key': 'a_value', 'b_key': 'a_key+1'}
正如我们所见,第一次迭代似乎完成了这项工作,然后被第二次取消了。我只是不明白为什么。我还尝试调整该问题的非常具体的答案:Replace values in dict if value of another key within a nested dict is found in value,但无济于事。我正在寻找一个通用答案:如何获得所需的输出?
从理论上来说,我也想了解一下为什么"b_value"被重置为a_key+1。谢谢。
【问题讨论】:
标签: python dictionary