在Python中附加关联数组

cap*_*rap 1 python dictionary list append

我最近一直都在寻找解决方案,到目前为止无济于事.我来自php到python,遇到了关联数组的差异,我现在不确定要克服.

走这条线:

data[user]={i:{'item':row[0],'time':row[1]}}
Run Code Online (Sandbox Code Playgroud)

data[user]显然覆盖了我的每个条目,因为它没有附加,它只是每次都替换数据.

在PHP中,如果我想在for循环中追加新的数据,我可以这样做

data[user][i][]=array('item'=>'x','time'=>'y'); // crude example
Run Code Online (Sandbox Code Playgroud)

在python中,我做不到:

data[user][]={i:{'item':row[0],'time':row[1]}}
Run Code Online (Sandbox Code Playgroud)

它对我的barfs []

我也做不到:

data[user][i]={'item':row[0],'time':row[1]}
Run Code Online (Sandbox Code Playgroud)

通过循环我是我的迭代器...我认为这是因为data[user]尚未定义,但是,操作?我已经创建了data={},但我还没有将用户填充为密钥.

在python中,我必须先定义一个键才能定义它,包括一个子键吗?

我尝试了很多.append()选项和其他奇怪的技巧,但我想知道这样做的正确方法.

做到:

data[user,i]={'item':row[0],'time':row[1]}
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的.

我的正确方法是什么,python朋友?

zwo*_*wol 9

这样的事情应该有效.请注意,与PHP不同,Python具有用于数值数组(称为"列表")和关联数组(称为"词典"或"词组")的单独基本类型.

if user not in data:
    data[user] = []
data[user].append({'item': row[0], 'time': row[1]})
Run Code Online (Sandbox Code Playgroud)

  • 除了不将列表称为"数组",因为还有`array.array`. (2认同)