获取 Python 带计算的输出字典
Getting Python Output Dictionary with calculations
我是 Python 和 Whosebug 的新手。我目前正忙于在线学习 Python,我需要完成一个项目,该项目需要 Python 代码的非常具体的输出才能继续该项目。
我被困在一个问题上一个多星期了,我找不到解决方案。因此,我们非常欢迎任何帮助。
我们来自此数据 (datos_lista):
('23', 'RETIRO', 'Despejado', (25, 29), 0)
('22', 'MONCLOA-ARAVACA', 'Despejado', (21, 24), 6)
('20', 'FUENCARRAL-EL PARDO', 'Despejado', (45, 49), 14)
('20', 'FUENCARRAL-EL PARDO', 'Despejado', (25, 29), 7)
('20', 'FUENCARRAL-EL PARDO', 'Despejado', (25, 29), 4)
enter image description here
我们需要做的是:
- datos_lista[3] 分组依据 (AgeRange = (21,24),...):
按年龄段分组 ((25, 29),(21, 24),(45, 49),...)
- datos_lista[3] 计数:
计算 AgeRange 出现的次数。
- 并且,3- datos_lista[4]== 计数如果 == 4:
计算 datos_lista[4]== 4 的次数
(在上面的例子中,这只在最后一行出现一次)
(('20', 'FUENCARRAL-EL PARDO', 'Despejado', (25, 29), 4))
问题要求我提供以下输出:
Output required
所有这些都需要在这个“代码检查”上工作:
"""# Prueba de funcionamiento1:
total_accidentes_y_muertes_por_edades = totales_mortales(datos_lista)
for k, totales in total_accidentes_y_muertes_por_edades.items: print(k, totales)
print()
"""# Prueba de funcionamiento2:
tasa_accidentes_mortales_por_mil = [(k, m*1000/n) for k, (n, m) in total_accidentes_y_muertes_por_edades.items()]
for k_tasa in tasa_accidentes_mortales_por_mil:
print(k_tasa)
"""
我已经能够单独生成代码并匹配解决方案,但它们都没有通过“代码检查”或一起产生输出。
代码尝试次数:
1-
def totales (datos_lista):
from collections import Counter
totales1 = Counter()
for p in datos_lista:
totales1[p[3]] += 1
return(totales1)
2-
def totales2 (datos_lista):
from collections import Counter
from collections import defaultdict
totales2 = Counter()
for q in datos_lista:
if q [4] == 4:
totales2[q[3]] += 1
return(totales2)
非常感谢您,
(如果有任何不清楚的地方请告诉我,我是新手所以我不知道如何正确地表述它以使其足够清楚)
丹尼尔
你的Prueba de funcionamiento1
代码有问题,total_accidentes_y_muertes_por_edades.items
是一个方法,你没有调用它,你对它做了一个for循环,所以它会抛出异常。
根据你对问题的描述,我定义了函数totales2
并得到了输出
datos_lista = [
('23', 'RETIRO', 'Despejado', (25, 29), 0),
('22', 'MONCLOA-ARAVACA', 'Despejado', (21, 24), 6),
('20', 'FUENCARRAL-EL PARDO', 'Despejado', (45, 49), 14),
('20', 'FUENCARRAL-EL PARDO', 'Despejado', (25, 29), 7),
('20', 'FUENCARRAL-EL PARDO', 'Despejado', (25, 29), 4)
]
def totales2(datos_lista):
counter = {}
for *_, age_range, c in datos_lista:
t = counter.setdefault(age_range, [0, 0])
t[0] += 1
if c == 4:
t[1] += 1
return counter
total_accidentes_y_muertes_por_edades = totales2(datos_lista)
for k, totales in total_accidentes_y_muertes_por_edades.items():
print(k, totales)
print()
tasa_accidentes_mortales_por_mil = [(k, m*1000/n) for k, (n, m) in total_accidentes_y_muertes_por_edades.items()]
for k_tasa in tasa_accidentes_mortales_por_mil:
print(k_tasa)
输出:
(25, 29) [3, 1]
(21, 24) [1, 0]
(45, 49) [1, 0]
((25, 29), 333.3333333333333)
((21, 24), 0.0)
((45, 49), 0.0)
我是 Python 和 Whosebug 的新手。我目前正忙于在线学习 Python,我需要完成一个项目,该项目需要 Python 代码的非常具体的输出才能继续该项目。 我被困在一个问题上一个多星期了,我找不到解决方案。因此,我们非常欢迎任何帮助。
我们来自此数据 (datos_lista):
('23', 'RETIRO', 'Despejado', (25, 29), 0)
('22', 'MONCLOA-ARAVACA', 'Despejado', (21, 24), 6)
('20', 'FUENCARRAL-EL PARDO', 'Despejado', (45, 49), 14)
('20', 'FUENCARRAL-EL PARDO', 'Despejado', (25, 29), 7)
('20', 'FUENCARRAL-EL PARDO', 'Despejado', (25, 29), 4)
enter image description here
我们需要做的是:
- datos_lista[3] 分组依据 (AgeRange = (21,24),...):
按年龄段分组 ((25, 29),(21, 24),(45, 49),...)
- datos_lista[3] 计数:
计算 AgeRange 出现的次数。
- 并且,3- datos_lista[4]== 计数如果 == 4:
计算 datos_lista[4]== 4 的次数 (在上面的例子中,这只在最后一行出现一次) (('20', 'FUENCARRAL-EL PARDO', 'Despejado', (25, 29), 4))
问题要求我提供以下输出:
Output required
所有这些都需要在这个“代码检查”上工作:
"""# Prueba de funcionamiento1:
total_accidentes_y_muertes_por_edades = totales_mortales(datos_lista)
for k, totales in total_accidentes_y_muertes_por_edades.items: print(k, totales)
print()
"""# Prueba de funcionamiento2:
tasa_accidentes_mortales_por_mil = [(k, m*1000/n) for k, (n, m) in total_accidentes_y_muertes_por_edades.items()]
for k_tasa in tasa_accidentes_mortales_por_mil:
print(k_tasa)
"""
我已经能够单独生成代码并匹配解决方案,但它们都没有通过“代码检查”或一起产生输出。
代码尝试次数:
1-
def totales (datos_lista):
from collections import Counter
totales1 = Counter()
for p in datos_lista:
totales1[p[3]] += 1
return(totales1)
2-
def totales2 (datos_lista):
from collections import Counter
from collections import defaultdict
totales2 = Counter()
for q in datos_lista:
if q [4] == 4:
totales2[q[3]] += 1
return(totales2)
非常感谢您, (如果有任何不清楚的地方请告诉我,我是新手所以我不知道如何正确地表述它以使其足够清楚) 丹尼尔
你的Prueba de funcionamiento1
代码有问题,total_accidentes_y_muertes_por_edades.items
是一个方法,你没有调用它,你对它做了一个for循环,所以它会抛出异常。
根据你对问题的描述,我定义了函数totales2
并得到了输出
datos_lista = [
('23', 'RETIRO', 'Despejado', (25, 29), 0),
('22', 'MONCLOA-ARAVACA', 'Despejado', (21, 24), 6),
('20', 'FUENCARRAL-EL PARDO', 'Despejado', (45, 49), 14),
('20', 'FUENCARRAL-EL PARDO', 'Despejado', (25, 29), 7),
('20', 'FUENCARRAL-EL PARDO', 'Despejado', (25, 29), 4)
]
def totales2(datos_lista):
counter = {}
for *_, age_range, c in datos_lista:
t = counter.setdefault(age_range, [0, 0])
t[0] += 1
if c == 4:
t[1] += 1
return counter
total_accidentes_y_muertes_por_edades = totales2(datos_lista)
for k, totales in total_accidentes_y_muertes_por_edades.items():
print(k, totales)
print()
tasa_accidentes_mortales_por_mil = [(k, m*1000/n) for k, (n, m) in total_accidentes_y_muertes_por_edades.items()]
for k_tasa in tasa_accidentes_mortales_por_mil:
print(k_tasa)
输出:
(25, 29) [3, 1]
(21, 24) [1, 0]
(45, 49) [1, 0]
((25, 29), 333.3333333333333)
((21, 24), 0.0)
((45, 49), 0.0)