如何使用字典理解重新编写代码的最后三行?你知道吗
split2列表的列名如下所示。你知道吗
'year, month, date_of_month, day_of_week, births'
split2 = [['1994', '1', '2', '7', '7772'],
['1994', '1', '3', '1', '10142'],
['1994', '1', '4', '2', '11248'],
['1994', '1', '5', '3', '11053'],
['1994', '1', '6', '4', '11406'],
['1994', '1', '7', '5', '11251'],
['1994', '1', '8', '6', '8653'],
['1994', '1', '9', '7', '7910'],
['1994', '1', '10', '1', '10498'],
['1994', '1', '11', '2', '11706'],
['1994', '1', '12', '3', '11567'],
['1994', '1', '13', '4', '11212'],
['1994', '1', '14', '5', '11570'],
['1994', '1', '15', '6', '8660'],
['1994', '1', '16', '7', '8123']]
dayofweek = [int(i[3]) for i in split2]
births = [int(i[-1]) for i in split2]
combine = list(zip(dayofweek, births))
edict = {}
for i in combine:
if i[0] in edict.keys():
edict[i[0]] += i[-1]
else:
edict[i[0]] = i[-1]
print(edict)
output:
{1: 20640, 2: 22954, 3: 22620, 4: 22618, 5: 22821, 6: 17313, 7: 23805}
如果不是更优雅的解决方案,我会这么做
之所以可以这样做,是因为combine的元素是
tuple
类型的,只要说“i, v
”,就会自动将其解包相当于说
这样做可以:
由于您希望dict基于一周中出现在
split2
中的每一天,或者一组唯一的dict,因此可以迭代set(dayofweek)
,然后针对一周中的某一天,通过迭代combine
并匹配该天并用生成器将该天的出生数输出到sum
来生成当天的dict键,该值是当天出生数的总和。你知道吗相关问题 更多 >
编程相关推荐