0

辞書内、さらに多くの配列内に配列を追加します。

私は質問をしました、そして、Jakebird451は私を助けました。しかし、私は今ほとんどの質問があります。

fruits = [{
    'name':"apple",
    'color':["red","green"],
    'weight':1
}, {
    'name':"banana",
    'color':["yellow","green"],
    'weight':1
}, {
    'name':"orange",
    'color':"orange",
    'weight':[1,2]
}, {
    'name':"pear",
    'color':"orange",
    "size" : [
                    {
                        "weight" : 4,
                        "mass" : 1.6
                    },
                    {
                        "weight" : 4,
                        "mass" : 2
                    },
                    {
                        "weight" : 4,
                        "mass" : 2.5
                    }
                ]
}]

別の配列を持つ別の辞書がある場合はどうなりますか?この関数を使用して重量と質量を取得するにはどうすればよいですか?

def findCarByColor(theColor):
    array=[]
    for x in carList: 
        if theColor in x['Color']:
            array.append(x['name']+" "+x['weight'])
    return array
print findit2("red")
4

2 に答える 2

1

両方のケースを処理したい場合はfruits、質問のように変数があると仮定します。

def findItByColor(theColor):
    array=[]
    for x in fruits: 
        if theColor in x['color']:
            try:
                array.append(x['name']+" "+ str(x['weight']))
            except KeyError:
                size = ' '.join( [ '[Weight %s Mass %s]'
                                   % (str(item['weight']),str(item['mass']))
                         for item in x['size'] ])
                array.append( x['name']+" "+ size )
    return array

print findItByColor("orange")

これは印刷します:

['orange [1, 2]', 'pear [Weight 4 Mass 1.6] [Weight 4 Mass 2] [Weight 4 Mass 2.5]']

このクエリ中:

print findItByColor("green")

戻り値:

['apple 1', 'banana 1']
于 2012-06-07T21:29:38.547 に答える
0

辞書に「サイズ」キーの重量要素と質量要素を作成したようです。

それに応じてコードを変更する必要があります。

def findCarByColor(theColor):
    array=[]
    for x in carList: 
        if theColor in x['Color']:
            array.append(x['name']+" "+x['size']['weight'] +" "+x['size']['mass'] )
    return array
print findit2("red")

ただし、重み値の保存方法に一貫性がないため、これは「洋ナシ」の例でのみ機能します。

編集:

例では、基になるデータ構造を変更し続けます。つまり、findCarByColor()のコードも変更する必要があります。

私は提案します

  1. 保存する必要のあるデータを正確に特定します
  2. データ構造を標準化します。「洋ナシ」の辞書にサイズリストがあるのに、他の辞書にはないのはなぜですか。データを可能な限り簡潔で一貫性のあるものに保つことで、(関数のように)データの操作がはるかに簡単になります。
于 2012-06-07T21:28:03.487 に答える