よくあるpython dir(dict)は辞書の利用可能な方法を示しています。また、dir(dict)の "somemethod"はsomedethodがsedデータ型で利用可能かどうかを示しています。 、>
['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__',\
'__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__',\
'__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__',\
'__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__',\
'__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems',\
'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values',\
'viewitems', 'viewkeys', 'viewvalues']
今、私たちはここにいくつかの物事を見ることができます -
py.2.7->
['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__',\
'__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__',\
'__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__',\
'__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__',\
'__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems',\
'iterkeys', 'itervalues','keys', 'pop', 'popitem', 'setdefault', 'update', 'values', \
'viewitems', 'viewkeys', 'viewvalues']
py.3.5:私たちは私たちの問題で、それを考慮場合SO我々は中にいることそれ自体ができpop
、、has_key
、 'get'、そしてPythonの辞書は並べ替えられていないので(それがそのまま出力されます)、update
も使用できます。
まず、辞書のトラフリストと条件トラフ項目を横断する必要があります。辞書マップや辞書の理解度に応じてトリックを行うことも、dict.items()だけでタプルのリストを返すこともできます。 そう
def duDict(dictionary,codnitionElement,keyInQuesiton):
el = dictionary.pop(keyInQuesiton) #similar as list.pop
if condition(dictionary.get(codnitionElement)):
el = something
dictionary.update({keyInQuesiton:el })
else:pass
return dictionary
その後、線に沿って何か
condDict = lambda dict: duDict(dict,predefinedCondition,forKey)
map(condDict , listOfDicts)
希望これは `
を助け<= in'は、有効なPythonの演算子ではありません。最後の行をインデントしてはいけませんか? –
また、変数名 'dict'の使用を避けたいのは、ビルトインをシャドウするためです。 1つのキーに 'dict.update()'を使う必要はありません。代わりに 'dict [k2] = newvalue'を使用してください。 –
最後に、あなたのコードが辞書をインプレースで更新します。新しいリストを作成する必要はなく、元のリストが引き続き参照しているすべての辞書に変更を加えています。それが問題であれば、まずその辞書のコピーを作成する必要があります。 –