python
  • string
  • function
  • dictionary
  • arguments
  • 2017-05-03 15 views 1 likes 
    1

    同様の質問に対してはいくつかの回答が見受けられますが、組み込み関数/複数項目辞書はありません。異なる地図投影法のベースマップ引数を含む辞書があるとします。これは等価として機能するように関数への引数として辞書要素を渡す

    Domains = {'TPCentral':["projection='geos',lon_0=-160,lat_0=0,resolution='l'"], 
    'World':["projection='robin',lon_0=0"]} 
    

    Iは、

    m = Basemap(Domains['TPCentral']) 
    

    こと(maplotlibから)ベースマップ関数を呼び出したいです。

    m = Basemap(projection='geos',lon_0=-160,lat_0=0,resolution='l') 
    

    問題は、これが1つの長い文字列として渡している、(*使用してみました)別々の引数にそれを破る方法がわかりません。前もって感謝します!

    +0

    のような文字列処理は、[この質問](https://stackoverflow.com/questions/186857/splitting-a-semicolon-separated-strを見てくださいPythonでの辞書への変換)。 – tyteen4a03

    +0

    私は辞書を構築しようとしていません。 –

    +0

    これについてはどうすればいいのですか?[質問](http://stackoverflow.com/questions/36901/what-does-double-star-and-star-do-for-parameters) – RoaaGharra

    答えて

    1
    ["projection='geos',lon_0=-160,lat_0=0,resolution='l'"] 
    

    は、単一の文字列を含むリストです。それをアンパックすると、文字のリストが生成されます。これは、引数の数よりはるかに大きく、送信する引数ではないことは確かです。あなたは、より良い、この値を維持するために辞書を使用します。その後、

    'TPCentral': { 
        'projection': 'geos', 
        'lon_0': -160, 
        'lat_0': 0, 
        'resolution': 'l'} 
    

    とキーワード引数を開梱して解凍します:

    m = Basemap(**Domains['TPCentral']) 
    

    あなたはこの形式によって強制されている場合は、あなたが少しを行うことができます

    pairs = [x.split('=') for x in Domains['TPCentral'][0].split(',')] 
    Domains['TPCentral'] = {k: eval(v) for k, v in pairs} 
    
    +0

    これは私が探していたものです。ありがとうございます。辞書にサブリスト/ディクショナリを含めることはできません。つまり、dict = {'x':{'y':{'z': 'a = 1'}}} –

    +0

    ちょうど2〜3分待たなければなりませんでした。 –

    関連する問題