Python字典可以像PHP数组一样方便吗?


Can Python dictionaries to be as handy as PHP array?

最近,我正在做一个基于Python的项目,并面临字典的问题。在PHP中,我可以通过以下指令轻松创建一个多维数组:

$user = "Tom";
$type = "New";
$userlist[$user]['count'] += 1;
$userlist[$user][$type] += 1;

如果数组不存在,PHP 会在数组中创建一个新元素,这对于编码非常方便。Python 字典可以提供与 PHP 相同且方便的功能吗?

Python 不会像 PHP 那样神奇地实例化字典;但是,只要稍加深思熟虑,您就可以让它做你想做的事。

from collections import defaultdict, Counter
users = defaultdict(Counter)
users['Tom']['Count'] += 1
users['Tom']['New'] += 1

(另外,当变量不是列表时,将变量称为"somethinglist"可能是一个坏主意,type是一个Python关键字,所以也不要将其用作变量名称!

你可以使用 Python 的默认字典(正如这个答案所暗示的):

from collections import defaultdict
user = "Tom"
type = "New"
userlist = defaultdict(lambda: defaultdict(int))
userlist[user]['count'] += 1
userlist[user][type] += 1