2017-05-04 25 views
-2

mjhmの答えに続いてOrsoneredDictにjsonファイルをロードしようとしています。Can I get JSON to load into an OrderedDict in Python?。私はシンプルさとコードのためだけのJSON文字列とされ始めている:python 2.6でOrderedDictにjsonをロード - 予期しないキーワードエラー

#!/usr/bin/python 

import simplejson as json 
import ordereddict 

testjson='{ "foo": 1, "bar": 2 }' 

my_ordered_dict = json.loads(testjson, object_pairs_hook=ordereddict.OrderedDict) 

上記を実行している場合しかし、私は次のエラーを取得する:

Traceback (most recent call last): 
    File "./l.py", line 8, in <module> 
    my_ordered_dict = json.loads(testjson, object_pairs_hook=ordereddict.OrderedDict) 
    File "/usr/lib64/python2.6/site-packages/simplejson/__init__.py", line 318, in loads 
    return cls(encoding=encoding, **kw).decode(s) 
TypeError: __init__() got an unexpected keyword argument 'object_pairs_hook' 

私は、Python 2.6.6によsimplejsonのバージョンは2.0.9です。 jsonファイルをOrderedDictにロードする方法はありますか?目的は、jsonを読み込んでいくつかのエントリを追加し、元のjsonファイルの順序を保持してプリントアウトすることです。

編集:

それはまだ動作しないのsimplejsonアップグレードした後 - のsimplejsonの異なるバージョンがピップで、スクリプトによって報告されました。

$ pip show simplejson 
DEPRECATION: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of pip will drop support for Python 2.6 
Name: simplejson 
Version: 3.10.0 
Summary: Simple, fast, extensible JSON encoder/decoder for Python 
Home-page: http://github.com/simplejson/simplejson 
Author: Bob Ippolito 
Author-email: [email protected] 
License: MIT License 
Location: /usr/lib64/python2.6/site-packages 
Requires: 

は、どちらものsimplejsonモジュールに同じ場所を報告し、両方があるように見える:

simplejson version: 2.0.9 
simplejson path: /usr/lib64/python2.6/site-packages/simplejson/__init__.pyc 
しかし

、PIPレポート:

print "simplejson version: " + json.__version__ 
print "simplejson path: " + json.__file__ 

それは出力します。私は、スクリプトに以下を追加しましたインストール済み:

$ ls -ld /usr/lib64/python2.6/site-packages/simplejson* 
drwxr-xr-x 3 root root 4096 May 9 15:29 /usr/lib64/python2.6/site-packages/simplejson 
drwxr-xr-x 2 root root 4096 May 9 15:29 /usr/lib64/python2.6/site-packages/simplejson-2.0.9-py2.6.egg-info 
drwxr-xr-x 2 root root 4096 May 9 09:10 /usr/lib64/python2.6/site-packages/simplejson-3.10.0-py2.6.egg-info 

どうすればpythonがバージョン2.0.9ではなくバージョン3.10.0を使用していることを確認できますか?

+0

あなたの 'simplejson'を更新してください。 – user2357112

答えて

1

object_pairs_hook was added to simplejson in version 2.1.0.バージョンが古すぎます。それを更新する。

+0

'pip install -Iv simplejson 2.1.0'を試しましたが、2.1.0で一致するディストリビューションが見つかりませんでした。インストールするバージョンがPython 2.6.6で動作するかどうか不明です。互換性の問題について心配する必要はありますか? – Lidia

+0

@Lidia:最新バージョンに更新するだけです。 – user2357112

+0

'sudo pip install simplejson --upgrade'はこのトリックを行いました:simplejson-3.10.0を正常にインストールしました – Lidia

関連する問題