Python处理数据Get小技巧


(声明:本教程仅供本人学习使用,如有人使用该技术触犯法律与本人无关)
(如果有错误,还希望指出。共同进步)


defaultdict

from collections import defaultdict

egs = list(range(5))
# =========== 指定字典内为list =============
# 指明test为list对象
test = defaultdict(list)

for eg in egs:
    test[eg].append(eg)

# test
defaultdict(list, {0: [0], 1: [1], 2: [2], 3: [3], 4: [4]})
# =========== 指定字典内为dict =============
# 指明test为dict对象
test = defaultdict(dict)

for eg in egs:
    test.setdefault(eg, []).append(eg)

# test
defaultdict(dict, {0: [0], 1: [1], 2: [2], 3: [3], 4: [4]})

集合

a = set(list(range(3, 8)))	# {3, 4, 5, 6, 7}
b = set(list(range(5, 10)))	# {5, 6, 7, 8, 9}

并集

合并是取两个集合中不重复的元素。可以用union方法,或者|运算符
a | b
a.union(b)

# {3, 4, 5, 6, 7, 8, 9}

交集

a & b
a.intersection(b)

# {5, 6, 7}

检测父集或子集

c = set(list(range(5, 7)))	# {5, 6}

# 子.issubset(父)
c.issubset(a)
# 父.issuperset(子)
b.issuperset(c)	# True

匿名函数

仅由单条语句组成,该语句的结果就是返回值。它是通过lambda关键字定义的,这个关键字没有别的含义,仅仅是说“我们正在声明的是一个匿名函数”。
test= ['ab', 'abd', 'ccdddb', 'aaaa', 'abab']

# 以列表元素出现字母的个数进行排序
test.sort(key=lambda x: len(set(list(x))))

# 注意:sort是改变原对象
# ['aaaa', 'ab', 'abab', 'abd', 'ccdddb']

柯里化:部分参数应用

# 实现改变一个参数进行变化
def add_numbers(x, y):
    return x + y

add_five = lambda y: add_numbers(5, y)

# 同上
from functools import partial
add_five = partial(add_numbers, 5)

执行主目录

在写一些脚本的时候,会碰到导包的问题,或者脚本中执行django环境的情况,下面是个模板
import os
import sys
import argparse
import django

# windows设置
os.chdir("../")
# linux设置
sys.path.append('.')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'XXXXXXXX.settings')

django.setup()

# 导入django的模块
“”“

”“”

def delete_user_social_relation(*args):
    pass

def main():
    parser = argparse.ArgumentParser(description='Delete')
    # 添加参数
    parser.add_argument('-u', dest='test1',
                        choices={'1', '2', '3'},  # 可供选择的参数,可设置多个,集合形式
                        default='2', help='')  # 默认指定参数
    user = parser.parse_args()

    delete_user_social_relation(user.test1)


if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/weixin_43633797/article/details/106652961