根据python中的ID号在嵌套字典中添加项目

时间:2016-10-03 14:23:00

标签: python list dictionary nested

我将字典嵌套在列表中。字典设置如下:

public SuperClass{ public Vector2 getCenter(){ float x = this.position.x + WIDTH/2; float y = this.position.y + HEIGHT/2; return new Vector2(x, y); } public void setCenter(Vector2 position){ float x = position.x - WIDTH/2; float y = position.y - HEIGHT/2; setPosition(new Vector2(x, y)); } }

我在列表中有多个这样的词典,所以列表如下所示:

{'ID': 123, 'Balance': 45, 'Comments': None}

我正在尝试做的是检查列表中是否已存在带有ID的字典,如果有,请从输入中添加Balance。 有没有可读的pythonic方法来做到这一点?

4 个答案:

答案 0 :(得分:0)

我在这里听到的是"我如何从列表中获取项目,因为我知道一些关于它的独特关键值?"。您承诺保留当前数据结构多少钱?我倾向于完全免除清单并使用词典。

d = {
    123: {'Balance': 45, 'Comments': None}
    456: {'Balance': 78, 'Comments': None}
}

现在检查ID是否仅存在if some_id in d:,并且余额为d[some_id]["Balance"] += some_amount

答案 1 :(得分:0)

data = [{'ID': 123, 'Balance': 45, 'Comments': None}, {'ID': 456, 'Balance': 78, 'Comments': None}]
any( inputData == item['ID'] for item in data )

inputData = 123
True

答案 2 :(得分:0)

迭代列表,检查是否与ID匹配,如果是,则将值添加到该词典的BALANCE的现有值。以下是示例代码:

>>> my_dict_list = [{'ID': 123, 'Balance': 45, 'Comments': None}, {'ID': 456, 'Balance': 78, 'Comments': None}]
>>> 
>>> new_id = int(raw_input())
123
>>> for dict_obj in my_dict_list:
...     if new_id == dict_obj['ID']:
...         dict_obj['Balance'] += float(raw_input())
... 
34
>>> my_dict_list
[{'Balance': 79.0, 'ID': 123, 'Comments': None}, {'Balance': 78, 'ID': 456, 'Comments': None}]
# Value updated for "ID" 123

答案 3 :(得分:0)

accounts = [
    {'ID': 123, 'Balance': 45, 'Comments': None}, 
    {'ID': 456, 'Balance': 78, 'Comments': None},
]

def update_balance(account_id, amount):
    account = next((a for a in accounts if a['ID'] == account_id), None)
    if account:
        account['Balance'] += amount
        return account

account = int(input('Account ID: '))
amount = float(input('Amount: '))

update_balance(account, amount)