合并列表,同时在python中显示零 [英] Merge lists while showing zeros in python

查看:103
本文介绍了合并列表,同时在python中显示零的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个Django QuerySet来对值进行计数,但是不幸的是它不显示0个值.因此,我想像SQL中的左联接那样合并我的两个列表.我显示我的输入和期望的输出.

I created a Django QuerySet which count values but unfortunately it do not show 0 values. Therefore I want to merge my two list like left join in SQL. I show my inputs and desired outputs .

输入1(Django查询1):

我这样打印出来:

for i in query_1:
     print (i['day'], i['count_1'])  

2018-01-17 00:00:00+01:00 49
2018-01-16 00:00:00+01:00 139
2018-01-15 00:00:00+01:00 144
2018-01-14 00:00:00+01:00 142
2018-01-13 00:00:00+01:00 141
2018-01-12 00:00:00+01:00 144
2018-01-11 00:00:00+01:00 145
2018-01-10 00:00:00+01:00 95

输入2(Django查询2):

我这样打印出来:

    for i in query_2:
         print (i['day'], i['count_2'])  

   2018-01-17 00:00:00+01:00 2
   2018-01-16 00:00:00+01:00 6
   2018-01-14 00:00:00+01:00 2
   2018-01-13 00:00:00+01:00 4

我想要的输出是:

2018-01-17 00:00:00+01:00 49  2
2018-01-16 00:00:00+01:00 139 6
2018-01-15 00:00:00+01:00 144 0
2018-01-14 00:00:00+01:00 142 2
2018-01-13 00:00:00+01:00 141 4
2018-01-12 00:00:00+01:00 144 0
2018-01-11 00:00:00+01:00 145 0
2018-01-10 00:00:00+01:00 95  0 

我尝试了这个,但是失败了:

I tried this but I failed:

for a, b in zip (query_1, query_2)
    if a['day'] == b['day']:
       print (a['count_2']) #It prints only the result of query_2 not both :(
    else:
       print ('0') 

推荐答案

new_data = [ i['day'] + ' ' + str(i['count_1']) for i in query_1]  
new_data.extend([ i['day'] + ' ' + str(i['count_1']) for i in query_2])
local_dict = {}
for values in new_data:
    date, time, val = values.split()
    if date in local_dict:
        new_value = local_dict[date]
        local_dict[date] = new_value.replace(new_value[-1],val)
    else:
        local_dict.setdefault(date,values+ (' %s' % '0'))
print(local_dict.values())
>>>
["2018-01-17 00:00:00+01:00 49  2",
"2018-01-16 00:00:00+01:00 139 6",
"2018-01-15 00:00:00+01:00 144 0",
"2018-01-14 00:00:00+01:00 142 2",
"2018-01-13 00:00:00+01:00 141 4",
"2018-01-12 00:00:00+01:00 144 0",
"2018-01-11 00:00:00+01:00 145 0",
"2018-01-10 00:00:00+01:00 95  0"]

这篇关于合并列表,同时在python中显示零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆