【问题标题】:add a value to pre-existing dictionary key in python在python中为预先存在的字典键添加一个值
【发布时间】:2012-05-09 08:30:39
【问题描述】:

我一直在尝试向预先存在的字典键添加一个值。该值来自 db.Model Car,其属性名为 price

尝试了两个代码块(如下),但得到了 AttributeError: 'GqlQuery' object has no attribute 'price'。

items = {"BE1234":"2","BE1923":"3","BE2032":"1", etc}
------------------------------------------------------------
block 1)
for item in items:
  cars = db.GqlQuery('SELECT * FROM Car WHERE item=:1',item)
  items[item] = cars.price
------------------------------------------------------------
block 2)
for item in items:
  cars = db.GqlQuery('SELECT * FROM Car WHERE item=:1',item)
  items.update({item:cars.price})

我想要得到的是:

items = {"BE1234":["2","100"],"BE1923":["31","200"],"BE2032":["19","300"], etc}

更新(最终工作代码)

for item in items:
  cars = db.GqlQuery('SELECT * FROM Car WHERE item=:1',item)
  for car in cars:
    items[item]=[items[item],str(car.price)]

【问题讨论】:

  • 确保查询没有返回 NONE 并且表 car 有一个字段 price

标签: python google-app-engine gql gqlquery


【解决方案1】:

构造一个要插入的列表(值)并只更新一个键的值: items["BE1234"] = ["2", "100"]

详细(Shiva 的评论有一种“更干净”的方式来做同样的事情):

current_val = items["BE1234"]
new_val = "100";
new_array = [current_val, new_val]
items["BE1234"] = new_array

【讨论】:

  • >>> items = {"BE1234":"2","BE1923":"3","BE2032":"1"} >>> car_price=100 >>> items['BE1234']=[items['BE1234'],car_price] >>> items {'BE2032': '1', 'BE1234': ['2', 100], 'BE1923': '3'}
  • 快速问题...您是否知道如何调用该值?所以如果我有 items = {"BE1234":["2","100"],"BE1923":["31","200"]},我怎么能得到 100??
  • 遍历列表的值["2", "100"]
猜你喜欢
  • 2019-01-04
  • 2019-02-08
  • 1970-01-01
  • 2017-09-09
  • 2020-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多