日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python字典嵌套实例

發(fā)布時間:2023/12/31 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python字典嵌套实例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#coding:UTF-8
import os?
import sys?
import collections

?
#文件內(nèi)容如下(獲得)
#[2018春節(jié)爆字統(tǒng)計]用戶(123456)獲得福字(0)(1)?
?
?#文件內(nèi)容如下(消耗)
?#[2018春節(jié)會員兌換統(tǒng)計]用戶(888888)進行會員兌換(0), 目前等級(2), 到期時間(1519997460), 兌換前等級(1), 到期時間(1519997456)?
?
file_get = "./TheSpringFestival_get"
file_consum ="./TheSpringFestival_xiao"

#定義空字典存儲數(shù)據(jù)
dict_get = {}

#解析每一行數(shù)據(jù)(獲得)
def get_data(tmp_line):
splist_result = tmp_line.split('(');
usernum = splist_result[1].split(')')[0]
key_nums = splist_result[2].split(')')[0]
key_count = splist_result[3].split(')')[0]
return usernum,key_nums

#解析每一行數(shù)據(jù)(消耗)
def get_data2(tmp_line):
splist_result = tmp_line.split('(');
usernum = splist_result[1].split(')')[0]
return usernum

#分析判斷并保存數(shù)據(jù)?
def func_ana_get():
print "Enter func !"
fp_get = open(file_get,"a+");
get_lins = fp_get.readlines();
for tmp_line in get_lins:
#print tmp_line
user,key = get_data(tmp_line);
if dict_get.has_key(user):
if dict_get[user].has_key(key):
dict_get[user][key] = dict_get[user][key]+1?
else:
dict_get[user][key] = 1
pass
else:
tmp_dict = {};
tmp_dict[key] = 1;
dict_get[user] = tmp_dict
fp_get.close()

#消耗?
def func_ana_xiao():
print "Enter func !"
fp_get = open(file_consum,"a+");
get_lins = fp_get.readlines();
for tmp_line in get_lins:
#print tmp_line.strip()
user = get_data2(tmp_line)
if dict_get.has_key(user):
for keys in dict_get[user]:
dict_get[user][keys] = dict_get[user][keys]-1
else:
pass
fp_get.close()

?#統(tǒng)計字典中各值的和
def get_sum(user_data):
sum = 0
for keys in user_data:
sum = sum + user_data[keys]
return sum

#統(tǒng)計排序
def func_ana_tonji():
sort_dict ={}
for keys in dict_get:
sum = get_sum(dict_get[keys])
sort_dict[keys] = sum

aa = sorted(sort_dict.items(),key=lambda item:item[1],reverse=True) print aa nn = 0 for keys in aa:print keys[0],keys[1] if nn > 10:breaknn = nn+1

func_ana_get();

func_ana_xiao();

func_ana_tonji();?
?
?
?
?
?
?
?#!/usr/bin/env python
#--coding:utf-8--
#會員鮮花庫存統(tǒng)計
import MySQLdb
import os, sys, re, string
import time, getopt

optmap = {
'dbuser' : 'haoren',
'dbpass' : 'ddddd',
'dbhost' : '172.17.1.14',
'dbhost_gm' : '172.17.1.13',
'dbport' : 3306,
'dbname' : 'PIWMDB',
'dbname_gm' : 'TGTMDB'
}

def main():
one_day = time.strftime("%Y%m%d", time.localtime(time.time() - 246060))
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
one_day = value
else:
print "請輸入8位日期(比如:20130215)"
return 'no'
print "正在統(tǒng)計會員鮮花庫存(%s)..." %one_day

db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])db_conn.query("use %s" %optmap['dbname'])db_cursor = db_conn.cursor()vip_user_list = {}for i in range(10):sql = "select USERID, VIPSTATE from VIPUSER%s" %iprint sqldb_cursor.execute(sql)db_rows = db_cursor.fetchall()for USERID, VIPSTATE in db_rows:vip_user_list[USERID] = VIPSTATEvip_user_flower_list = {}for i in range(10):sql = "select USERID, FLOWER from VIPUSERFLOWER%s" %iprint sqldb_cursor.execute(sql)db_rows = db_cursor.fetchall()for USERID, FLOWER in db_rows:vip_user_flower_list[USERID] = FLOWERvip_state_flower_list = {}vip_state_flower_list[1] = 0;vip_state_flower_list[2] = 0;vip_state_flower_list[3] = 0;for key in vip_user_list:if key in vip_user_flower_list:if vip_user_list[key] in vip_state_flower_list:vip_state_flower_list[vip_user_list[key]] += vip_user_flower_list[key]for key in vip_state_flower_list:print key, vip_state_flower_list[key]db_cursor.close()db_conn.close()db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost_gm'], port=optmap['dbport'], db=optmap['dbname_gm'])db_conn.query("use %s" %optmap['dbname_gm'])db_cursor = db_conn.cursor()dword_time = time.mktime(time.strptime(one_day, '%Y%m%d'))sql = "update VIPUSERFLOWERMONTHLY set year_flower_left_num=%d, month_flower_left_num=%d, week_flower_left_num=%d where count_time='%d'" %(vip_state_flower_list[3], vip_state_flower_list[2], vip_state_flower_list[1], dword_time)print sqldb_conn.query(sql)db_conn.commit()db_cursor.close()db_conn.close()

main()
#if?name?== "main":

main()

?
?
??
?
?
??
?#!/usr/bin/env python
#--coding:utf-8--
#會員信息統(tǒng)計
import MySQLdb
import os, sys, re, string
import time, getopt

optmap = {
'dbuser' : 'haoren',
'dbpass' : 'ddddd',
'dbhost' : '172.17.1.13',
'dbport' : 3306,
'dbname' : 'GTMDB',
'logdir' : '/home/haoren/logdir/', #外網(wǎng)環(huán)境日志目錄
'logpattern' : '^sessionserver.log.' #外網(wǎng)環(huán)境日志名稱前綴
}

def get_files(dir, pattern):
print dir, pattern
match_file_list = []
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
for file_name in cur_file_list:
if re.search(pattern, file_name):
match_file_list.append(file_name)
return match_file_list
else:
return 'no'

def main():
one_day = time.strftime("%Y%m%d", time.localtime(time.time() - 246060)) #默認日期為腳本運行的上一天
opts, args = getopt.getopt(sys.argv[1:], 'd:')
for op, value in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
one_day = value
else:
print "請輸入8位日期(比如:20130215)"
return 'no'

print "正在讀取VIP用戶數(shù)據(jù)(%s)..." %one_daydb_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'], host=optmap['dbhost'], port=optmap['dbport'], db=optmap['dbname'])db_cursor = db_conn.cursor()temp_vip_active_user_num_file_name = '/tmp/vipactiveusernumtemp.txt'command = "cat /dev/null > %s" %(temp_vip_active_user_num_file_name)os.system(command)if re.search('haoren', optmap['logdir']):print '外網(wǎng)環(huán)境'log_dir_name_list = get_files(optmap['logdir'], one_day[2:])for log_dir_name_item in log_dir_name_list:log_dir_full_path = optmap['logdir']+log_dir_name_item+'/'log_file_name_list = get_files(log_dir_full_path, optmap['logpattern'] + one_day[2:])for log_file_name_item in log_file_name_list:print log_file_name_itemcommand = "cat %s%s |awk '/用戶登錄/' |awk '/vip狀態(tài)/' >> %s" % (log_dir_full_path, log_file_name_item, temp_vip_active_user_num_file_name)os.system(command)else:print '內(nèi)網(wǎng)環(huán)境'log_file_name_list = get_files(optmap['logdir'], optmap['logpattern'] + one_day[2:])for log_file_name_item in log_file_name_list:command = "cat %s%s |awk '/用戶登錄/' |awk '/vip狀態(tài)/' >> %s" % (optmap['logdir'], log_file_name_item, temp_vip_active_user_num_file_name)os.system(command)command = "cat %s |wc -l" %temp_vip_active_user_num_file_nameos.system(command)#一天當中用戶可能從月會員降級到周會員,造成不同會員狀態(tài)的同一帳號統(tǒng)計兩次,所以總會員!=年會員+月會員+周會員)#不同狀態(tài)的會員用同一計算機登錄,所以總mac/ip!=年mac/ip+月mac/ip+周mac/iptotal_account_map = {}total_mac_map = {}total_ip_map = {}before_account_map = {}before_mac_map = {}before_ip_map = {}account_map = {1:{}, 2:{}, 3:{}, 11:{}, 12:{}, 13:{}}mac_map = {1:{}, 2:{}, 3:{}, 11:{}, 12:{}, 13:{}}ip_map = {1:{}, 2:{}, 3:{}, 11:{}, 12:{}, 13:{}}temp_vip_active_user_num_file = open(temp_vip_active_user_num_file_name)for one_line in temp_vip_active_user_num_file.readlines():match = re.search("^(\S+) SS\[\d+\] TRACE: 用戶登錄:imid:(\d+),mac地址:(\d+),ip地址:(\d+),vip狀態(tài):(\d+),登錄時間:(\d+)(\S+)", one_line)if match:if string.atoi(match.group(5)) in (1, 2, 3):total_account_map[string.atoi(match.group(2))] = string.atoi(match.group(5))total_mac_map[string.atoi(match.group(3))] = string.atoi(match.group(5))total_ip_map[string.atoi(match.group(4))] = string.atoi(match.group(5))elif string.atoi(match.group(5)) in (11, 12, 13):before_account_map[string.atoi(match.group(2))] = string.atoi(match.group(5))before_mac_map[string.atoi(match.group(3))] = string.atoi(match.group(5))before_ip_map[string.atoi(match.group(4))] = string.atoi(match.group(5))account_map[string.atoi(match.group(5))][string.atoi(match.group(2))] = string.atoi(match.group(3))mac_map[string.atoi(match.group(5))][string.atoi(match.group(3))] = string.atoi(match.group(2))ip_map[string.atoi(match.group(5))][string.atoi(match.group(4))] = string.atoi(match.group(2))temp_vip_active_user_num_file.close()dword_time = time.mktime(time.strptime(one_day, '%Y%m%d'))db_conn.query("use %s" %optmap['dbname'])sql = "delete from VIPACTIVEUSERNUM where active_time='%d'" %dword_timeprint sqldb_conn.query(sql)sql = "insert into VIPACTIVEUSERNUM (active_time) values('%d')" %(dword_time)print sqldb_conn.query(sql)sql = "update VIPACTIVEUSERNUM set year_account_num=%d, year_mac_num=%d, year_ip_num=%d, month_account_num=%d, month_mac_num=%d, month_ip_num=%d, week_account_num=%d, week_mac_num=%d, week_ip_num=%d, total_mac_num=%d, total_ip_num=%d, before_account_num=%d, before_mac_num=%d, before_ip_num=%d where active_time='%d'" %(len(account_map[3]), len(mac_map[3]), len(ip_map[3]), len(account_map[2]), len(mac_map[2]), len(ip_map[2]), len(account_map[1]), len(mac_map[1]), len(ip_map[1]), len(total_mac_map), len(total_ip_map), len(before_account_map), len(before_mac_map), len(before_ip_map), dword_time)print sqldb_conn.query(sql)db_conn.commit()db_cursor.close()db_conn.close()

main()
#if?name?== "main"

main()

?










本文轉(zhuǎn)自 chengxuyonghu 51CTO博客,原文鏈接:http://blog.51cto.com/6226001001/2074444,如需轉(zhuǎn)載請自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的python字典嵌套实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。