Package org.python.core
Class PyDictionary
- java.lang.Object
-
- org.python.core.PyObject
-
- org.python.core.AbstractDict
-
- org.python.core.PyDictionary
-
- All Implemented Interfaces:
java.io.Serializable
,java.util.concurrent.ConcurrentMap
,java.util.Map
,Traverseproc
- Direct Known Subclasses:
PyDefaultDict
,PyDictionaryDerived
public class PyDictionary extends AbstractDict implements java.util.concurrent.ConcurrentMap, Traverseproc
A builtin python dictionary.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.python.core.PyObject
PyObject.ConversionException
-
-
Field Summary
Fields Modifier and Type Field Description static PyType
TYPE
-
Fields inherited from class org.python.core.PyObject
gcMonitorGlobal
-
-
Constructor Summary
Constructors Constructor Description PyDictionary()
Create an empty dictionary.PyDictionary(java.util.concurrent.ConcurrentMap<PyObject,PyObject> backingMap, boolean useBackingMap)
PyDictionary(java.util.Map<PyObject,PyObject> map)
Create a new dictionary which is based on given map.PyDictionary(PyObject[] elements)
Create a new dictionary with the element as content.PyDictionary(PyType type)
For derived typesPyDictionary(PyType type, int capacity)
Create a dictionary of type with the specified initial capacity.PyDictionary(PyType type, java.util.concurrent.ConcurrentMap<PyObject,PyObject> backingMap, boolean useBackingMap)
PyDictionary(PyType type, java.util.Map<PyObject,PyObject> map)
Create a new dictionary which is populated with entries the given map.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
__cmp__(PyObject otherObj)
Equivalent to the standard Python __cmp__ method.boolean
__contains__(PyObject o)
Equivalent to the standard Python __contains__ method.void
__delitem__(PyObject key)
Equivalent to the standard Python __delitem__ method.PyObject
__eq__(PyObject otherObj)
Equivalent to the standard Python __eq__ method.PyObject
__finditem__(int index)
A variant of the __finditem__ method which accepts a primitiveint
as the key.PyObject
__finditem__(PyObject key)
Very similar to the standard Python __getitem__ method.PyObject
__iter__()
Return an iterator that is used to iterate the element of this sequence.int
__len__()
Equivalent to the standard Python __len__ method.PyObject
__ne__(PyObject otherObj)
Equivalent to the standard Python __ne__ method.boolean
__nonzero__()
Equivalent to the standard Python __nonzero__ method.void
__setitem__(PyObject key, PyObject value)
Equivalent to the standard Python __setitem__ method.void
clear()
Remove all items from the dictionary.boolean
containsKey(java.lang.Object key)
boolean
containsValue(java.lang.Object value)
PyDictionary
copy()
Return a shallow copy of the dictionary.java.util.Set
entrySet()
boolean
equals(java.lang.Object obj)
Should almost never be overridden.static PyObject
fromkeys(PyObject keys)
static PyObject
fromkeys(PyObject keys, PyObject value)
java.lang.Object
get(java.lang.Object key)
PyObject
get(PyObject key)
Return this[key] if the key exists in the mapping, None is returned otherwise.PyObject
get(PyObject key, PyObject defaultObj)
Return this[key] if the key exists in the mapping, defaultObj is returned otherwise.java.util.concurrent.ConcurrentMap<PyObject,PyObject>
getMap()
boolean
has_key(PyObject key)
Return true if the key exist in the dictionary.int
hashCode()
boolean
isEmpty()
boolean
isMappingType()
boolean
isSequenceType()
PyList
items()
Return a copy of the dictionary's list of (key, value) tuple pairs.PyObject
iteritems()
Returns an iterator over (key, value) pairs.PyObject
iterkeys()
Returns an iterator over the dictionary's keys.PyObject
itervalues()
Returns an iterator over the dictionary's values.PyList
keys()
Return a copy of the dictionary's list of keys.java.util.Set
keySet()
void
merge(PyObject other, boolean override)
Merge another PyObject that supports keys() with this dict.void
mergeFromKeys(PyObject other, PyObject keys, boolean override)
Merge another PyObject via its keys() methodvoid
mergeFromSeq(PyObject other, boolean override)
Merge any iterable object producing iterable objects of length 2 into this dict.PyObject
pop(PyObject key)
Return a value based on key from the dictionary.PyObject
pop(PyObject key, PyObject defaultValue)
Return a value based on key from the dictionary or default if that key is not found.PyObject
popitem()
Return a random (key, value) tuple pair and remove the pair from the dictionary.java.lang.Object
put(java.lang.Object key, java.lang.Object value)
void
putAll(java.util.Map map)
java.lang.Object
putIfAbsent(java.lang.Object key, java.lang.Object value)
java.util.Set<PyObject>
pyKeySet()
boolean
refersDirectlyTo(PyObject ob)
Optional operation.java.lang.Object
remove(java.lang.Object key)
boolean
remove(java.lang.Object key, java.lang.Object value)
java.lang.Object
replace(java.lang.Object key, java.lang.Object value)
boolean
replace(java.lang.Object key, java.lang.Object oldValue, java.lang.Object newValue)
PyObject
setdefault(PyObject key)
Return this[key] if the key exist, otherwise insert key with a None value and return None.PyObject
setdefault(PyObject key, PyObject failobj)
Return this[key] if the key exist, otherwise insert key with the value of failobj and return failobjint
size()
java.lang.String
toString()
int
traverse(Visitproc visit, java.lang.Object arg)
Traverses all directly containedPyObject
s.void
update(PyObject other)
Insert all the key:value pairs fromd
into this dictionary.void
updateCommon(PyObject[] args, java.lang.String[] keywords, java.lang.String methName)
java.util.Collection
values()
PyObject
viewitems()
Returns a dict_items on the dictionary's itemsPyObject
viewkeys()
Returns a dict_keys on the dictionary's keysPyObject
viewvalues()
Returns a dict_values on the dictionary's values-
Methods inherited from class org.python.core.PyObject
__abs__, __add__, __and__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __coerce__, __coerce_ex__, __complex__, __delattr__, __delattr__, __delete__, __delitem__, __delslice__, __delslice__, __dir__, __div__, __divmod__, __ensure_finalizer__, __findattr__, __findattr__, __findattr_ex__, __finditem__, __float__, __floordiv__, __format__, __ge__, __get__, __getattr__, __getattr__, __getitem__, __getitem__, __getnewargs__, __getslice__, __getslice__, __gt__, __hash__, __hex__, __iadd__, __iand__, __idiv__, __idivmod__, __ifloordiv__, __ilshift__, __imod__, __imul__, __index__, __int__, __invert__, __ior__, __ipow__, __irshift__, __isub__, __iternext__, __itruediv__, __ixor__, __le__, __long__, __lshift__, __lt__, __mod__, __mul__, __neg__, __not__, __oct__, __or__, __pos__, __pow__, __pow__, __radd__, __rand__, __rdiv__, __rdivmod__, __reduce__, __reduce_ex__, __reduce_ex__, __repr__, __rfloordiv__, __rlshift__, __rmod__, __rmul__, __ror__, __rpow__, __rrshift__, __rshift__, __rsub__, __rtruediv__, __rxor__, __set__, __setattr__, __setattr__, __setitem__, __setitem__, __setslice__, __setslice__, __str__, __sub__, __tojava__, __truediv__, __trunc__, __unicode__, __xor__, _add, _and, _callextra, _cmp, _div, _divmod, _doget, _doget, _doset, _eq, _floordiv, _ge, _gt, _iadd, _iand, _idiv, _idivmod, _ifloordiv, _ilshift, _imod, _imul, _in, _ior, _ipow, _irshift, _is, _isnot, _isub, _itruediv, _ixor, _jcall, _jcallexc, _jthrow, _le, _lshift, _lt, _mod, _mul, _ne, _notin, _or, _pow, _rshift, _sub, _truediv, _xor, asDouble, asIndex, asIndex, asInt, asInt, asIterable, asLong, asLong, asName, asName, asString, asString, asStringOrNull, asStringOrNull, bit_length, conjugate, delDict, delType, dispatch__init__, fastGetClass, fastGetDict, getDict, getType, implementsDescrDelete, implementsDescrGet, implementsDescrSet, invoke, invoke, invoke, invoke, invoke, invoke, isCallable, isDataDescr, isIndex, isInteger, isNumberType, noAttributeError, object___subclasshook__, readonlyAttributeError, setDict, setType
-
-
-
-
Field Detail
-
TYPE
public static final PyType TYPE
-
-
Constructor Detail
-
PyDictionary
public PyDictionary()
Create an empty dictionary.
-
PyDictionary
public PyDictionary(PyType type, int capacity)
Create a dictionary of type with the specified initial capacity.
-
PyDictionary
public PyDictionary(PyType type)
For derived types
-
PyDictionary
public PyDictionary(java.util.Map<PyObject,PyObject> map)
Create a new dictionary which is based on given map.
-
PyDictionary
public PyDictionary(java.util.concurrent.ConcurrentMap<PyObject,PyObject> backingMap, boolean useBackingMap)
-
PyDictionary
public PyDictionary(PyType type, java.util.concurrent.ConcurrentMap<PyObject,PyObject> backingMap, boolean useBackingMap)
-
PyDictionary
public PyDictionary(PyType type, java.util.Map<PyObject,PyObject> map)
Create a new dictionary which is populated with entries the given map.
-
PyDictionary
public PyDictionary(PyObject[] elements)
Create a new dictionary with the element as content.- Parameters:
elements
- The initial elements that is inserted in the dictionary. Even numbered elements are keys, odd numbered elements are values.
-
-
Method Detail
-
getMap
public java.util.concurrent.ConcurrentMap<PyObject,PyObject> getMap()
- Specified by:
getMap
in classAbstractDict
-
__len__
public int __len__()
Description copied from class:PyObject
Equivalent to the standard Python __len__ method. Part of the mapping discipline.
-
__nonzero__
public boolean __nonzero__()
Description copied from class:PyObject
Equivalent to the standard Python __nonzero__ method. Returns whether of not a givenPyObject
is considered true.- Overrides:
__nonzero__
in classPyObject
-
__finditem__
public PyObject __finditem__(int index)
Description copied from class:PyObject
A variant of the __finditem__ method which accepts a primitiveint
as the key. By default, this method will call__finditem__(PyObject key)
with the appropriate args. The only reason to override this method is for performance.- Overrides:
__finditem__
in classPyObject
- Parameters:
index
- the key to lookup in this sequence.- Returns:
- the value corresponding to key or null if key is not found.
- See Also:
PyObject.__finditem__(PyObject)
-
__finditem__
public PyObject __finditem__(PyObject key)
Description copied from class:PyObject
Very similar to the standard Python __getitem__ method. Instead of throwing a KeyError if the item isn't found, this just returns null. Classes that wish to implement __getitem__ should override this method instead (with the appropriate semantics.- Overrides:
__finditem__
in classPyObject
- Parameters:
key
- the key to lookup in this container- Returns:
- the value corresponding to key or null if key is not found
-
__setitem__
public void __setitem__(PyObject key, PyObject value)
Description copied from class:PyObject
Equivalent to the standard Python __setitem__ method.- Overrides:
__setitem__
in classPyObject
- Parameters:
key
- the key whose value will be setvalue
- the value to set this key to
-
__delitem__
public void __delitem__(PyObject key)
Description copied from class:PyObject
Equivalent to the standard Python __delitem__ method.- Overrides:
__delitem__
in classPyObject
- Parameters:
key
- the key to be removed from the container
-
__iter__
public PyObject __iter__()
Description copied from class:PyObject
Return an iterator that is used to iterate the element of this sequence. From version 2.2, this method is the primary protocol for looping over sequences.If a PyObject subclass should support iteration based in the __finditem__() method, it must supply an implementation of __iter__() like this:
public PyObject __iter__() { return new PySequenceIter(this); }
When iterating over a python sequence from java code, it should be done with code like this:for (PyObject item : seq.asIterable()) { // Do somting with item }
-
__eq__
public PyObject __eq__(PyObject otherObj)
Description copied from class:PyObject
Equivalent to the standard Python __eq__ method.
-
__ne__
public PyObject __ne__(PyObject otherObj)
Description copied from class:PyObject
Equivalent to the standard Python __ne__ method.
-
__cmp__
public int __cmp__(PyObject otherObj)
Description copied from class:PyObject
Equivalent to the standard Python __cmp__ method.
-
has_key
public boolean has_key(PyObject key)
Return true if the key exist in the dictionary.- Specified by:
has_key
in classAbstractDict
-
__contains__
public boolean __contains__(PyObject o)
Description copied from class:PyObject
Equivalent to the standard Python __contains__ method.- Overrides:
__contains__
in classPyObject
- Parameters:
o
- the element to search for in this container.- Returns:
- the result of the search.
-
get
public PyObject get(PyObject key, PyObject defaultObj)
Return this[key] if the key exists in the mapping, defaultObj is returned otherwise.- Specified by:
get
in classAbstractDict
- Parameters:
key
- the key to lookup in the dictionary.defaultObj
- the value to return if the key does not exists in the mapping.
-
get
public PyObject get(PyObject key)
Return this[key] if the key exists in the mapping, None is returned otherwise.- Specified by:
get
in classAbstractDict
- Parameters:
key
- the key to lookup in the dictionary.
-
copy
public PyDictionary copy()
Return a shallow copy of the dictionary.- Specified by:
copy
in classAbstractDict
-
clear
public void clear()
Remove all items from the dictionary.- Specified by:
clear
in interfacejava.util.Map
- Specified by:
clear
in classAbstractDict
-
update
public void update(PyObject other)
Insert all the key:value pairs fromd
into this dictionary.- Specified by:
update
in classAbstractDict
-
updateCommon
public void updateCommon(PyObject[] args, java.lang.String[] keywords, java.lang.String methName)
-
merge
public void merge(PyObject other, boolean override)
Merge another PyObject that supports keys() with this dict.- Specified by:
merge
in classAbstractDict
- Parameters:
other
- a PyObject with a keys() methodoverride
- if true, the value from other is used on key-collision
-
mergeFromKeys
public void mergeFromKeys(PyObject other, PyObject keys, boolean override)
Merge another PyObject via its keys() method- Specified by:
mergeFromKeys
in classAbstractDict
- Parameters:
other
- a PyObject with a keys() methodkeys
- the result of other's keys() methodoverride
- if true, the value from other is used on key-collision
-
mergeFromSeq
public void mergeFromSeq(PyObject other, boolean override)
Merge any iterable object producing iterable objects of length 2 into this dict.- Specified by:
mergeFromSeq
in classAbstractDict
- Parameters:
other
- another PyObjectoverride
- if true, the value from other is used on key-collision
-
setdefault
public PyObject setdefault(PyObject key)
Return this[key] if the key exist, otherwise insert key with a None value and return None.- Specified by:
setdefault
in classAbstractDict
- Parameters:
key
- the key to lookup in the dictionary.
-
setdefault
public PyObject setdefault(PyObject key, PyObject failobj)
Return this[key] if the key exist, otherwise insert key with the value of failobj and return failobj- Specified by:
setdefault
in classAbstractDict
- Parameters:
key
- the key to lookup in the dictionary.failobj
- the default value to insert in the dictionary if key does not already exist.
-
pop
public PyObject pop(PyObject key)
Return a value based on key from the dictionary.- Specified by:
pop
in classAbstractDict
-
pop
public PyObject pop(PyObject key, PyObject defaultValue)
Return a value based on key from the dictionary or default if that key is not found.- Specified by:
pop
in classAbstractDict
-
popitem
public PyObject popitem()
Return a random (key, value) tuple pair and remove the pair from the dictionary.- Specified by:
popitem
in classAbstractDict
-
items
public PyList items()
Return a copy of the dictionary's list of (key, value) tuple pairs.- Specified by:
items
in classAbstractDict
-
keys
public PyList keys()
Return a copy of the dictionary's list of keys.- Specified by:
keys
in classAbstractDict
-
iteritems
public PyObject iteritems()
Returns an iterator over (key, value) pairs.- Specified by:
iteritems
in classAbstractDict
-
iterkeys
public PyObject iterkeys()
Returns an iterator over the dictionary's keys.- Specified by:
iterkeys
in classAbstractDict
-
itervalues
public PyObject itervalues()
Returns an iterator over the dictionary's values.- Specified by:
itervalues
in classAbstractDict
-
hashCode
public int hashCode()
-
equals
public boolean equals(java.lang.Object obj)
Description copied from class:PyObject
Should almost never be overridden. If overridden, it is the subclasses responsibility to ensure thata.equals(b) == true
iffcmp(a,b) == 0
-
isMappingType
public boolean isMappingType()
- Overrides:
isMappingType
in classPyObject
-
isSequenceType
public boolean isSequenceType()
- Overrides:
isSequenceType
in classPyObject
-
viewkeys
public PyObject viewkeys()
Returns a dict_keys on the dictionary's keys- Overrides:
viewkeys
in classAbstractDict
-
viewitems
public PyObject viewitems()
Returns a dict_items on the dictionary's items- Overrides:
viewitems
in classAbstractDict
-
viewvalues
public PyObject viewvalues()
Returns a dict_values on the dictionary's values- Overrides:
viewvalues
in classAbstractDict
-
pyKeySet
public java.util.Set<PyObject> pyKeySet()
- Specified by:
pyKeySet
in classAbstractDict
-
entrySet
public java.util.Set entrySet()
- Specified by:
entrySet
in interfacejava.util.Map
- Specified by:
entrySet
in classAbstractDict
- See Also:
Map.entrySet()
-
keySet
public java.util.Set keySet()
- Specified by:
keySet
in interfacejava.util.Map
- See Also:
Map.keySet()
-
values
public java.util.Collection values()
- Specified by:
values
in interfacejava.util.Map
- Specified by:
values
in classAbstractDict
- See Also:
Map.values()
-
putAll
public void putAll(java.util.Map map)
- Specified by:
putAll
in interfacejava.util.Map
- See Also:
Map.putAll(Map map)
-
remove
public java.lang.Object remove(java.lang.Object key)
- Specified by:
remove
in interfacejava.util.Map
- See Also:
Map.remove(Object key)
-
put
public java.lang.Object put(java.lang.Object key, java.lang.Object value)
- Specified by:
put
in interfacejava.util.Map
- See Also:
Map.put(Object key, Object value)
-
get
public java.lang.Object get(java.lang.Object key)
- Specified by:
get
in interfacejava.util.Map
- See Also:
Map.get(Object key)
-
containsValue
public boolean containsValue(java.lang.Object value)
- Specified by:
containsValue
in interfacejava.util.Map
- See Also:
Map.containsValue(Object key)
-
containsKey
public boolean containsKey(java.lang.Object key)
- Specified by:
containsKey
in interfacejava.util.Map
- See Also:
Map.containsValue(Object key)
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmpty
in interfacejava.util.Map
- See Also:
Map.isEmpty()
-
size
public int size()
- Specified by:
size
in interfacejava.util.Map
- See Also:
Map.size()
-
putIfAbsent
public java.lang.Object putIfAbsent(java.lang.Object key, java.lang.Object value)
- Specified by:
putIfAbsent
in interfacejava.util.concurrent.ConcurrentMap
- Specified by:
putIfAbsent
in interfacejava.util.Map
-
remove
public boolean remove(java.lang.Object key, java.lang.Object value)
- Specified by:
remove
in interfacejava.util.concurrent.ConcurrentMap
- Specified by:
remove
in interfacejava.util.Map
-
replace
public boolean replace(java.lang.Object key, java.lang.Object oldValue, java.lang.Object newValue)
- Specified by:
replace
in interfacejava.util.concurrent.ConcurrentMap
- Specified by:
replace
in interfacejava.util.Map
-
replace
public java.lang.Object replace(java.lang.Object key, java.lang.Object value)
- Specified by:
replace
in interfacejava.util.concurrent.ConcurrentMap
- Specified by:
replace
in interfacejava.util.Map
-
traverse
public int traverse(Visitproc visit, java.lang.Object arg)
Description copied from interface:Traverseproc
Traverses all directly containedPyObject
s. Like in CPython,arg
must be passed unmodified tovisit
as its second parameter. IfVisitproc.visit(PyObject, Object)
returns nonzero, this return value must be returned immediately by traverse.Visitproc.visit(PyObject, Object)
must not be called with anull
PyObject-argument.- Specified by:
traverse
in interfaceTraverseproc
-
refersDirectlyTo
public boolean refersDirectlyTo(PyObject ob)
Description copied from interface:Traverseproc
Optional operation. Should only be implemented if it is more efficient than callingTraverseproc.traverse(Visitproc, Object)
with a visitproc that just watches out forob
. Must returnfalse
ifob
isnull
.- Specified by:
refersDirectlyTo
in interfaceTraverseproc
-
-