在嵌套字典

时间:2017-12-23 04:42:23

标签: python dictionary sum

对不起,我没有说清楚我的问题。我有一个变量x,我一直在迭代,我想在字典中包含x及其相应的子字典。

例如,x表示公交车站号。 6号巴士站距离巴士起步站的距离为1,距离巴士的最后一站的距离为变量2。

由于我不知道我在任何时间在哪个公交车站,我没有字典中的所有信息。

我想从一个空字典开始并迭代地更新不同的电台距离信息。

d1={}

d1 = {1: {'a': variable1, 'b': variable2}, 2: {'a': variable3, 'b': variable4}}

我想通过添加子字典中的值('a'和'b'的值的总和)来向d1插入一个键:'c':'value'的值对,如下所示。< / p>

d1= {1: {'a': 11, 'b': 22, 'c': 'value'}, 2: {'a': 456, 'b': 789, 'c': 'value'}}

我希望公交车站每个'c'的值为

value = variable1 + variable2
value = variable3 + variable4

我希望我现在能够更好地澄清我的问题。这是我关于stackoverflow的第一个问题,我认为我没有清楚地说明我的问题。感谢您的回复。

7 个答案:

答案 0 :(得分:2)

建立你几乎得到的东西..

d1[1]['c'] = d1[1]['a'] + d1[1]['b']
d1[2]['c'] = d1[2]['a'] + d1[2]['b']

这不是pythonic的做事方式(Ryan Stein的答案是),其他答案是。但这显示了另一种访问字典中值的方法。

答案 1 :(得分:1)

您可以尝试使用Python3:

d1= {1: {'a': 14, 'b': 16}, 2: {'a':15,  'b': 15}}
new_data = {a:{**{c:d for c, d in b.items()}, **{'c':sum(b.values())}} for a, b in d1.items()}

输出:

{1: {'a': 14, 'b': 16, 'c': 30}, 2: {'a': 15, 'b': 15, 'c': 30}}

答案 2 :(得分:1)

如果您希望每个词典条目的键'a''b'加总到'c'的键中,那么for循环就足够了和可读性。

d1 = {1: {'a': 11, 'b': 22}, 2: {'a': 456, 'b': 789}}

for item in d1.values():
    item['c'] = item['a'] + item['b']


print(d1)

{1: {'a': 11, 'b': 22, 'c': 33}, 2: {'a': 456, 'b': 789, 'c': 1245}}

答案 3 :(得分:1)

迭代dict。在内部dict个对象中添加新密钥。

for key in d1:
    d1.get(key)['c'] = sum(d1.get(key).values())

答案 4 :(得分:1)

d1= {1: {'a': 11, 'b': 22, 'c': 'value'}, 2: {'a': 456, 'b': 789, 'c': 'value'}}

# d1[1]['c']=33
# d1[2]['c']=1245

for numbers in d1:
    total = d1[numbers]["a"] + d1[numbers]["b"]
    d1[numbers]["c"] = total

print(d1[1]["c"])
print(d1[2]['c'])

答案 5 :(得分:0)

你可以通过列表理解来实现。总和,

<?php 
include "db.php";
$student_id = $_POST['id'];
$year = $_POST['year'];
$month = $_POST['month'];
$day = $_POST['day'];
$date = $_POST['date'];

$sql = "INSERT INTO student_attendance(student_id,year,month,day,date,status) value('$student_id', '$year', '$month', '$day', '$date', '1') ";
$result = mysql_query($sql);
?>

答案 6 :(得分:0)

如果知道dict只有两级,则可以使用理解。

{k: dict(zip(v.keys() + ['c'], v.values() + [sum(v.values())])) for k,v in d1.items()}