在字典中添加数组,在更多数组中?

2024-06-25 07:08:51 发布

您现在位置:Python中文网/ 问答频道 /正文

在字典中添加数组,在更多数组中。在

我问了一个问题,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
                    }
                ]
}]

如果有另一个字典和另一个数组呢? 如何使用这个函数来计算重量和质量?在

^{pr2}$

Tags: nameapple字典greenred数组masscolor
2条回答

看起来你已经把重量和质量元素列为字典中的“大小”键。在

您的代码需要相应地修改:

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")

但是,这只适用于“pear”示例,因为存储权重值的方式不一致。在

编辑:

您在示例中不断更改底层数据结构,这意味着findCarByColor()的代码也需要更改。在

我建议

  1. 明确你需要存储什么样的数据
  2. 标准化数据结构。为什么“梨”的字典有一个大小表,但其他的没有?通过尽可能保持数据的简洁和一致性,可以使操作数据(如在函数中)更简单。在

如果您想同时处理这两种情况,假设您有问题中的变量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")

打印:

^{pr2}$

在此查询期间:

print findItByColor("green")

退货:

['apple 1', 'banana 1']

相关问题 更多 >