-1

Recently, I'm working on a Python-based project and facing a issue with dictionaries. In PHP I can easily create a multiple dimension array by the following instruction:

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

PHP will create a new element within an array if it doesn't exist, which is very convenient for coding. Can Python dictionaries provide the same and handy function as PHP?

Cheng-Lin Yang
  • 61
  • 1
  • 1
  • 3
  • 1
    Why wouldn't you use the actual OOP features of Python instead? This question just sounds a bit trollish. – aychedee Jul 03 '12 at 22:32

2 Answers2

4

Python does not magically instantiate dictionaries as PHP does; however, with a bit of forethought, you can make it do what you want.

from collections import defaultdict, Counter

users = defaultdict(Counter)

users['Tom']['Count'] += 1
users['Tom']['New'] += 1

(also, calling a variable "somethinglist" when it's not a list is probably a bad idea, and type is a Python keyword, so don't use it as a variable name either!)

Hugh Bothwell
  • 55,315
  • 8
  • 84
  • 99
2

You can use Python's defaultdict (as this answer suggests):

from collections import defaultdict
user = "Tom"
type = "New"
userlist = defaultdict(lambda: defaultdict(int))
userlist[user]['count'] += 1
userlist[user][type] += 1
Community
  • 1
  • 1
dusan
  • 9,104
  • 3
  • 35
  • 55