1

次のように2つの辞書を含むリストがあります。

accuracy=[{'value':1,'key':'apple'}, {'value':2,'key':'orange'}]

私は以下のようなコードを持っています:

for fruit in accuracy:
    print fruit

上記のコードにより、次の結果が得られます。

{'value':1,'key':'apple'} {'value':2,'key':'orange'}

しかし、私はこのようなものが欲しい:

私が与える場合name=fruit.key、出力はname=appleオレンジの場合も同じである必要がありname=fruit.value、出力を与えるvalue=1場合は、他の果物の場合も同様です。どうすればこれを達成できますか。上記のコードを知っています。name=fruit.key私の望む結果が得られません。とにかくそれを得る方法はありますか?助けてください

4

1 に答える 1

5

あなたはそのようにすることができます:

accuracy=[{'value':1,'key':'apple'}, {'value':2,'key':'orange'}]
for fruit in accuracy:
    print 'name={key}'.format(**fruit)
    print 'value={value}'.format(**fruit)

これはあなたのニーズを満たすと思います。Python の文字列フォーマット (str.format()メソッド) の詳細については、次を参照してください。

ドット表記の使用

@mgilson は、あなたの要件をより満たす可能性がある別の可能性について言及しました。この場合、これはやり過ぎだと思いますが (なぜ表記を変更するだけなのでしょうか?)、一部の人にとっては興味深いかもしれないので、以下に追加します。

# Here is the special class @mgilson mentioned:
class DotDict(dict):
    def __getattr__(self, attr):
        return self.get(attr, None)
    __setattr__=dict.__setitem__
    __delattr__=dict.__delitem__

accuracy=[{'value':1,'key':'apple'}, {'value':2,'key':'orange'}]    
for fruit in accuracy:
    # Convert dict to DotDict before passing to .format() method:
    print 'name={fruit.key}'.format(fruit=DotDict(fruit))
于 2012-09-21T11:25:23.163 に答える