我对Python还不熟悉,所以请对我宽容一点。我使用字典为一个键存储多个值,但是在尝试更新值时遇到了问题。下面是我如何设置字典的;首先,我使用setdefault()
编写第一个值:
dictionary.setdefault(id.ID, []).append(id.enterTime)
dictionary.setdefault(id.ID, []).append(id.duration)
dictionary.setdefault(id.ID, []).append(id.enter)
dictionary.setdefault(id.ID, []).append(id.exit)
dictionary.setdefault(id.ID, []).append(id.standing)
dictionary.setdefault(id.ID, []).append(id.sitting)
为了便于解释,假设它在打印时产生以下输出:
{0: [5, 120, 0, 0, 0, 0]}
当输入id实例变量更改后,我只需删除原始值并将新值附加到字典中,即可使用以下代码更新字典:
dictionary[id.ID].remove(id.enter)
dictionary[id.ID].insert(2, id.enter)
词典打印如下:
{0: [5, 120, 1, 0, 0, 0]}
在程序的后面,实例变量id.出口变为1。我尝试在字典中将exit值从0更新为1后,将其更改如下:
dictionary[id.ID].remove(id.exit)
dictionary[id.ID].insert(3, id.exit)
我知道这样做很糟糕,但我认为这是更新值的最简单方法。当我这样做时,当它将id.enter
更改回其原始值但更新id.exit
时会出现问题:
{0: [5, 120, 0, 1, 0, 0]}
有人知道为什么会这样吗?谢谢。你知道吗
use@mkrieger1给出的答案解释了代码中的问题/错误,并给出了快速的解决方案。你知道吗
另一种存储数据的方法是使用嵌套的dict,使其更清晰,更不容易出错:
或者用
defaultdict
更好:如tutorial中所述:
如果你有名单
使用
remove(id.exit)
,当id.exit
等于1时,列表变为:作为一个简单的解决方案
只是使用
相关问题 更多 >
编程相关推荐