我将字典嵌套在列表中。字典设置如下:
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方法来做到这一点?
答案 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)