学习Python绕不过的13个小技巧,一般人我不告诉他,非常有用

今天的这些小技巧,对于初学者来说,还是非常香的~

字典


2个和字典相关的操作

1、反转字典

一个非常常见的字典任务是如果我们有一个字典并且想要反转它的键和值。因此,键将成为值,而值将成为键。
当我们这样做时,我们需要确保我没有重复的键,值可以重复,但键不能,并确保所有新键都是可散列的。

my\_dict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
# 方法一
my\_inverted\_dict\_1 = dict(map(reversed, my\_dict.items()))

# 方法二
from collections import defaultdict
my\_inverted\_dict\_2 \= defaultdict(list)
{my\_inverted\_dict\_2\[v\].append(k) for k, v in my\_dict.items()}

print(my\_inverted\_dict\_1)
print(my\_inverted\_dict\_2)

结果如下:
图片

2、合并两个或多个字典

假设我们有两个或多个字典,并且我们希望将它们全部合并为一个具有唯一键的字典。

from collections import defaultdict

def merge\_dicts(\*dicts):
    mdict \= defaultdict(list)
    for dict in dicts:
    for key in dict:
        res\[key\].append(d\[key\])
    return dict(mdict)

输入/输出操作


2个与输入、输出操作相关的操作

3、解析电子表格

另一种非常常见的文件交互是从电子表格中解析数据。
幸运的是,我们有 CSV 模块来帮助我们有效地执行该任务。

 \_mapping\_list = \[\]
with open("/path/to/data.csv") as my\_data:
    csv\_reader \= csv.reader(my\_data, delimiter=",")
    line\_count \= 0
    for line in csv\_reader:
        if line\_count == 0:
            header \= line
        else:
            row\_dict \= {key: value for key, value in zip(header, line)}
            csv\_mapping\_list.append(row\_dict)
        line\_count += 1

4、检查文件是否存在

在数据科学和许多其他应用程序中,我们经常需要从文件中读取数据或向其中写入数据。
要做到这一点的话,我们需要检查文件是否存在。
因此,我们的代码不会因错误而终止。

# 方法一
import os 
exists \= os.path.isfile('/path/to/file')

# 方法二
from pathlib import Path
config \= Path('/path/to/file') 
if config.is\_file(): 
    pass

列表


先来说说6个和列表相关的操作

5、将列表映射到字典

如果给定一个列表并将其映射到字典中。也就是说,我想将我的列表转换为带有数字键的字典,应该怎么做呢?

mylist = \['blue', 'orange', 'green'\]
#Map the list into a dict using the map, zip and dict functions
mapped\_dict = dict(zip(itr, map(fn, itr)))

6、对字符串列表进行排序

我们经常面临包含字符串的列表,我们需要按字母顺序、长度或我们想要或我们的应用程序需要的任何其他因素对这些列表进行排序。
现在,我应该提到这些是对字符串列表进行排序的直接方法,但有时您可能需要实现排序算法来解决该问题。

my\_list = \["blue", "red", "green"\]

# 方法一
my\_list.sort() 
my\_list \= sorted(my\_list, key=len) 

# 方法二
import locale
from functools import cmp\_to\_key
my\_list \= sorted(my\_list, key=cmp\_to\_key(locale.strcoll)) 

结果:
在这里插入图片描述

7、把多个列表合并成一个列表

当我们有两个或更多列表时,我们希望将它们全部收集到一个大列表中,其中较小列表的所有第一项构成较大列表中的第一个列表。

例如,如果我有 4 个列表 [1,2,3]、[‘a’,‘b’,‘c’]、[‘h’,‘e’,‘y’], 和[4,5,6],我们想为这四个列表创建一个新列表;它将是 [[1,‘a’,‘h’,4], [2,‘b’,‘e’,5], [3,‘c’,‘y’,6]] 。

结果:
图片

8、对字典列表进行排序

下一组日常列表任务是排序任务。根据列表中包含的项目的数据类型,我们将采用稍微不同的方式对它们进行排序。让我们首先从对字典列表进行排序开始。

dicts\_lists = \[
  {
    "Name": "James",
    "Age": 20,
  },
  {
     "Name": "May",
     "Age": 14,
  },
  {
    "Name": "Katy",
    "Age": 23,
  }
\]

# 方法一
dicts\_lists.sort(key=lambda item: item.get("Age"))

# 方法二
from operator import itemgetter
f \= itemgetter('Name')
dicts\_lists.sort(key\=f)

结果:
图片

9、根据另一个列表对列表进行排序

有时,我们可能想要/需要使用一个列表来对另一个列表进行排序。因此,我们将有一个数字列表(索引)和一个我想使用这些索引进行排序的列表。

a = \['blue', 'green', 'orange', 'purple', 'yellow'\]
b = \[3, 2, 5, 4, 1\]

sortedList =  \[val for (\_, val) in sorted(zip(b, a), key=lambda x: x\[0\])\]
print(sortedList)

结果:
在这里插入图片描述

10、把两个列表合并到一个字典

假设我们在Python中有两个列表,我们希望将它们合并为字典形式,其中一个列表的项目作为字典的键,另一个作为值。这是在用 Python 编写代码时经常遇到的一个非常常见的问题。
但是为了解决这个问题,我们需要考虑几个限制,比如两个列表的大小,两个列表中项目的类型,以及其中是否有重复的项目,尤其是我们将使用的项目 作为钥匙。我们可以通过使用像 zip 这样的内置函数来克服这个问题。

keys_list = ['A', 'B', 'C']
values_list = ['blue', 'red', 'bold']

# 有 3 种方法可以将这两个列表转换为字典
# 1.使用Python zip、dict函数
dict_method_1 = dict(zip(keys_list, values_list))
# 2. 使用带有字典推导式的 zip 函数
dict_method_2 = {key:value for key, value in zip(keys_list, values_list)}

# 3.循环使用zip函数
items_tuples = zip(keys_list, values_list) 
dict_method_3 = {} 
for key, value in items_tuples: 
    if key in dict_method_3: 
        pass 
    else: 
        dict_method_3[key] = value
        
print(dict_method_1)
print(dict_method_2)
print(dict_method_3)

结果:
图片

字符串


3个和字符串相关的操作;

11、使用 f 字符串

格式化字符串可能是您几乎每天都需要完成的第一项任务。
在 Python 中有多种方法可以格式化字符串,我最喜欢的是使用 f 字符串。

str\_val = 'books'
num\_val \= 15
print(f'{num\_val} {str\_val}') 
print(f'{num\_val % 2 = }') 
print(f'{str\_val!r}') 

price\_val \= 5.18362
print(f'{price\_val:.2f}') 

from datetime import datetime;
date\_val \= datetime.utcnow()
print(f'{date\_val=:%Y-%m-%d}') 

结果:
在这里插入图片描述

12、 以字节为单位获取字符串的大小

有时,尤其是在构建内存关键应用程序时,我们需要知道我们的字符串使用了多少内存。
幸运的是,这可以通过一行代码快速完成。

str1 = "hello"
str2 = "😀"

def str_size(s):
    return len(s.encode('utf-8'))

print(str_size(str1))
print(str_size(str2))

结果:
在这里插入图片描述

13、检查子串

我之前需要多次执行的一项非常常见的任务是,检查字符串是否在字符串列表中。

结果:
在这里插入图片描述


这里我为大家准备了一份针对零基础的Python学习资料,有兴趣的同学可以看看哦。

「 Python经验分享 」

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家免费分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
9f49b566129f47b8a67243c1008edf79.png

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

8c4513c1a906b72cbf93031e6781512b.png

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

afc935d834c5452090670f48eda180e0.png

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

252731a671c1fb70aad5355a2c5eeff0.png

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

6c361282296f86381401c05e862fe4e9.png

d2d978bb523c810abca3abe69e09bc1a.png

这份完整版的Python全套学习资料已经上传CSDN
朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值