首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

代码工作得很好,但似乎不是很Pythonic式的--我如何才能改进字典的创建以及从字典中创建组合?

要改进字典的创建以及从字典中创建组合,可以使用Python中的字典推导式和内置函数。

  1. 改进字典的创建:
    • 字典推导式是一种简洁的方式来创建字典。它可以通过遍历一个可迭代对象并使用表达式来定义键值对。例如:my_dict = {key: value for key, value in iterable}这里的iterable可以是列表、元组、集合等可迭代对象,keyvalue是根据需求自定义的变量名。可以根据具体情况来定义键和值的生成逻辑。
  2. 从字典中创建组合:
    • 使用字典推导式可以从一个字典中创建一个新的字典,可以根据需要选择性地提取和转换键值对。例如:my_dict = {'a': 1, 'b': 2, 'c': 3} new_dict = {key: value * 2 for key, value in my_dict.items()}这里的my_dict.items()返回一个可迭代对象,包含字典中的键值对。通过遍历这个可迭代对象,可以对键值对进行操作并创建新的字典。
  • 如果需要根据特定条件筛选字典中的键值对,可以在字典推导式中添加条件判断语句。例如:my_dict = {'a': 1, 'b': 2, 'c': 3} new_dict = {key: value for key, value in my_dict.items() if value > 1}这里只选择值大于1的键值对来创建新的字典。

综上所述,使用字典推导式和内置函数可以改进字典的创建方式,并从字典中创建组合。这种方式简洁高效,符合Pythonic风格。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

手把手教你学会Python函数式编程

在这篇文章里,你将学会什么是函数范式以及如何使用Python进行函数式编程。你也将了解列表推导和其它形式的推导。 函数范式 在命令式范式中,通过为计算机提供一系列指令然后执行它们来完成任务。...如果你在函数式思维方式中考虑得更多,而不是命令式思维方式,那么你最终会习惯它。 现在写一个像“square(num)”这样的普通函数虽然很好,但却是不对的。...但事实是,编写只有其他函数式程序员才能阅读的代码会有一定的乐趣。此外,使用一个函数并将其转换为一行代码是非常酷的。 Reduce Reduce是一个将迭代变成一个东西的函数。...函数式编程不是pythonic 您可能已经注意到了,我们想要在函数式编程中做的很多事情都围绕着列表。除了reduce函数和闭包之外,您看到的所有函数都会生成列表。...如果我们想要将列表中每个0以下的数字平方怎么办?有了lambda,map和filter你会写: 这似乎很长很复杂。通过列表推导,它只是: 列表推导仅适用于列表。

1.1K21

Python 进阶指南(编程轻松进阶):六、编写 Python 风格的代码

某些 Python 语言的特性有助于您编写 Python 风格的代码。 在这一章中,我将提供几种编写地道 Python 代码的常用方法以及相应案例。...如果你的代码不能工作,那是有原因的,只有仔细的、批判性的思考才能解决问题。拒绝盲目尝试解决方案的诱惑,直到事情似乎奏效;通常,你只是掩盖了问题,而不是解决了问题。...这段笨拙的代码可以工作,但是通过学习编写 Python 风格代码的更标准的方法,您可以节省一些时间和精力。本节解释了程序员常犯的错误,以及应该如何编写代码。...如果您正在编写早期 Python 版本运行的代码,请坚持使用format()字符串方法或%s转换说明符。 制作列表的浅层副本 切片语法可以很容易地从现有的字符串或列表中创建新的字符串或列表。...在交互式 Shell 中输入以下内容,看看它是如何工作的: >>> 'Hello, world!'[7:12] # Create a string from a larger string.

94960
  • 让你的 Python 代码优雅又地道

    学Python最简单的方法是什么?推荐阅读:Python开发工程师成长魔法 译序 如果说优雅也有缺点的话,那就是你需要艰巨的工作才能得到它,需要良好的教育才能欣赏它。...—— Edsger Wybe Dijkstra 在Python社区文化的浇灌下,演化出了一种独特的代码风格,去指导如何正确地使用Python,这就是常说的pythonic。...一般说地道(idiomatic)的python代码,就是指这份代码很pythonic。Python的语法和标准库设计,处处契合着pythonic的思想。...如果你正被如何写出pythonic的代码而困扰,或许这份笔记能给你帮助。 Raymond Hettinger是Python核心开发者,本文提到的许多特性都是他开发的。...示例代码和引用的语录都来自Raymond的演讲。这是我按我的理解整理出来的,希望你们理解起来跟我一样顺畅!

    1K100

    如何写出优雅又地道的Python代码?

    译序 如果说优雅也有缺点的话,那就是你需要艰巨的工作才能得到它,需要良好的教育才能欣赏它。...—— Edsger Wybe Dijkstra 在Python社区文化的浇灌下,演化出了一种独特的代码风格,去指导如何正确地使用Python,这就是常说的pythonic。...一般说地道(idiomatic)的python代码,就是指这份代码很pythonic。Python的语法和标准库设计,处处契合着pythonic的思想。...如果你正被如何写出pythonic的代码而困扰,或许这份笔记能给你帮助。 Raymond Hettinger是Python核心开发者,本文提到的许多特性都是他开发的。...示例代码和引用的语录都来自Raymond的演讲。这是我按我的理解整理出来的,希望你们理解起来跟我一样顺畅!

    1.1K100

    几段代码,测测你是 Python 菜鸟还是老鸟

    当你学完基础,可以写点代码的时候,可能经常感觉自己的实现很别扭。有经验的程序员会一眼看出你的代码出自一个初学者之手。这就是我们经常说的,代码不够 pythonic。...所谓 pythonic,我觉得包含两方面:一是代码的风格符合 Python 的特点,能合理使用 Python 的“语法糖”;二是代码简洁优美,稳定性高,可读性好,便于维护和修改。...所以,我们需要有一些设计的原则,但又不必拘泥于具体的形式,否则就钻入牛角尖了。 那么对于学习者来说,如何才能写出更 pythonic 的代码呢?...说到底还是个经验积累的过程,菜鸟不可能看本书、上个课就一夜变成老鸟,但只要坚持得够久就可以。我这边给几个建议: 多看。看官方库、优秀项目,学习别人的代码。以及看一些优质的教程和经验分享, 多搜。...当你实现一个小功能后,去网上搜一下,别人是怎么写的,对比下是不是比你自己的更好。举个例子:如何从列表中删除重复元素。

    73080

    让你的 Python 代码优雅又地道

    译序 如果说优雅也有缺点的话,那就是你需要艰巨的工作才能得到它,需要良好的教育才能欣赏它。...—— Edsger Wybe Dijkstra 在Python社区文化的浇灌下,演化出了一种独特的代码风格,去指导如何正确地使用Python,这就是常说的pythonic。...一般说地道(idiomatic)的python代码,就是指这份代码很pythonic。Python的语法和标准库设计,处处契合着pythonic的思想。...如果你正被如何写出pythonic的代码而困扰,或许这份笔记能给你帮助。 Raymond Hettinger是Python核心开发者,本文提到的许多特性都是他开发的。...示例代码和引用的语录都来自Raymond的演讲。这是我按我的理解整理出来的,希望你们理解起来跟我一样顺畅!

    79620

    手把手教你学会Python函数式编程

    在这篇文章里,你将学会什么是函数范式以及如何使用Python进行函数式编程。你也将了解列表推导和其它形式的推导。 函数范式 在命令式范式中,通过为计算机提供一系列指令然后执行它们来完成任务。...比如数字的最大公约数是什么,从1到n的乘积是什么等等。 因此,变量不能变化。一旦你设置了一个变量,它就永远保持这种状态(注意,在纯函数式语言中,它们不是变量)。因此,函数式编程没有副作用。...如果你在函数式思维方式中考虑得更多,而不是命令式思维方式,那么你最终会习惯它。 现在写一个像“square(num)”这样的普通函数虽然很好,但却是不对的。...但事实是,编写只有其他函数式程序员才能阅读的代码会有一定的乐趣。此外,使用一个函数并将其转换为一行代码是非常酷的。 Reduce Reduce是一个将迭代变成一个东西的函数。...总结 函数式编程美观而纯粹。函数式代码可以很干净,但也可能很乱。一些Python程序员不喜欢Python中的函数式编程。但我认为,你应该在解决问题时,使用最佳工具。

    37850

    让你的 Python 代码优雅又地道

    译序 如果说优雅也有缺点的话,那就是你需要艰巨的工作才能得到它,需要良好的教育才能欣赏它。...—— Edsger Wybe Dijkstra 在Python社区文化的浇灌下,演化出了一种独特的代码风格,去指导如何正确地使用Python,这就是常说的pythonic。...一般说地道(idiomatic)的python代码,就是指这份代码很pythonic。Python的语法和标准库设计,处处契合着pythonic的思想。...如果你正被如何写出pythonic的代码而困扰,或许这份笔记能给你帮助。 Raymond Hettinger是Python核心开发者,本文提到的许多特性都是他开发的。...示例代码和引用的语录都来自Raymond的演讲。这是我按我的理解整理出来的,希望你们理解起来跟我一样顺畅!

    64500

    对比几段代码,看看你是 Python 菜鸟还是老鸟(另有福利)

    ,拒绝猜测 现在做好过不做,但盲目动手不如不做 如果你的实现很难说清楚,那是个坏想法;反之亦然 … 当你学完基础,可以写点代码的时候,可能经常感觉自己的实现很别扭。...所谓 pythonic,我觉得包含两方面:一是代码的风格符合 Python 的特点,能合理使用 Python 的“语法糖”;二是代码简洁优美,稳定性高,可读性好,便于维护和修改。...所以,我们需要有一些设计的原则,但又不必拘泥于具体的形式,否则就钻入牛角尖了。 那么对于学习者来说,如何才能写出更 pythonic 的代码呢?...说到底还是个经验积累的过程,菜鸟不可能看本书、上个课就一夜变成老鸟,但只要坚持得够久就可以。我这边给几个建议: 多看。看官方库、优秀项目,学习别人的代码。...以及看一些优质的教程和经验分享,比如 Crossin的编程教室 ? 多搜。当你实现一个小功能后,去网上搜一下,别人是怎么写的,对比下是不是比你自己的更好。举个例子:如何从列表中删除重复元素。

    71740

    来看几段代码,测测你是 Python 菜鸟还是老鸟

    ,可以写点代码的时候,可能经常感觉自己的实现很别扭。...所谓 pythonic,我觉得包含两方面:一是代码的风格符合 Python 的特点,能合理使用 Python 的“语法糖”;二是代码简洁优美,稳定性高,可读性好,便于维护和修改。...所以,我们需要有一些设计的原则,但又不必拘泥于具体的形式,否则就钻入牛角尖了。 那么对于学习者来说,如何才能写出更 pythonic 的代码呢?...说到底还是个经验积累的过程,菜鸟不可能看本书、上个课就一夜变成老鸟,但只要坚持得够久就可以。我这边给几个建议: 多看。看官方库、优秀项目,学习别人的代码。...以及看一些优质的教程和经验分享,比如 Crossin的编程教室 多搜。当你实现一个小功能后,去网上搜一下,别人是怎么写的,对比下是不是比你自己的更好。举个例子:如何从列表中删除重复元素。

    55450

    友好的 Python:扩展友好

    虽然我脑海中想好了几个主题,但具体写什么还不知道,这个系列能写几篇也不知道。构思一篇博客真的是太难了,至少对我这种懒人来说。...注册中心 小 F 发现这样改动点还是太多了,主要原因是这个字典得自己写,很浪费精力。有没有办法自动生成这个映射呢?用注册大法!...用注册中心永远好过 eval 或者从 globals() 里面反查对象,前者才是 Pythonic 的。...值得注意的是,上面虽然通过启用魔法把扩展操作改进得非常友好,却损失了一些阅读代码的友好度——它把一些显式的操作变得有些隐晦(在 for 循环中 import_module 的副作用无法一眼看出)。...所以应该酌情使用,代码并不是越酷炫越好的,强大的武器永远要用在合适的地方。

    19620

    Python合并两个字典成一个新字典的几种方法比较

    (d2)首先创建一个空字典,并使用update方法向字典中添加元素。...注意,先添加的是d1,以保证后面添加的d2重复键会覆盖d1。此方法满足了我们的要求,而且清晰明确,可是三行代码总感觉不够Pythonic。...6.元素拼接我们从每个字典中获取一个元素列表,将列表拼接起来,然后再用拼接的列表构造字典:>>> d = dict(list(d1.items()) + list(d2.items()))>>> d =...8.chain items目前为止,我们讨论的解决方案中,最符合Python语言习惯而且只有一行代码实现的,是创建两个items的列表,然后拼接成字典。...10.字典拆分在Python3.5+中,可以使用一种全新的字典合并方式:>>> d = {**d1, **d2}这行代码很pythonic,如果是你的python版本是3.5+,用这种方法是很不错的选择

    64420

    我从编程教室毕业

    说实话,我是很幸运的,在 Crossin 先生的指导下完成从新手程序员到初级程序员的过程。...,以上提到的官方文档并不只是走马观花的一掠而过,而是实实在在的把文档中给出的示例代码都敲过一遍,虽然费时费力,但的确物有所值。...其实在日常的开发中,很少会遇到高深的算法或者复杂的数据结构,但还是得抽出时间学习。 有两本进阶书籍切切实实的帮助到了我,不管是在找工作方面还是学习编程方面。...对于某些庞大文档,要抱着打持久战的准备,一个很好的方法就是一次读完一个 topic, 比如有一次 Crossin 先生让我写一篇关于有序字典(OrderedDict) 的文章,了解到 OrderedDict...对于普通的写法来说,任何一个学习Python一个月的同学都能写出来,但 Pythonic 的写法就需要对 Python 了解得深入一些才行了。知识本身不难,但需要时间去学习掌握。

    62330

    Redis数据结构详解(2)-redis中的字典dict

    假如我们现在模拟将 hash值从0到5的哈希表节点 放入 size为4的哈希表数组 中,也就是将包含键值对的哈希表节点放在哈希表数组的指定索引上。...将哈希表的rehashidx值从-1置为0,表示rehash工作开始。 3. 节点转移,重新计算键的hash值和索引值,再将节点放置到ht[1]哈希表的对应索引位置上。 4....写在最后的最后 我是苏易困,大家也可以叫我易困,一名Java开发界的小学生,文章可能不是很优质,但一定会很用心。...距离上次更新都过去了好久,一是因为上海的疫情有点严重,一直没静下心来好好整理知识,还有就是发现自己得先很好地消化完知识才能够整理出来,不然其实各方面收获不大;所以后面也会自己先认真消化后再整理分享,不会追求速度...因为疫情要一直封到4月1号,我们小区还有1例阳性,更不知道到什么时候了,每天早上也要定闹钟抢菜,但还抢不到,因为没有绿叶菜的补给,我感觉已经得口腔溃疡了,还好买到了维C泡腾片,感觉可以稍微缓缓。

    59420

    如何在交叉验证中使用SHAP?

    使用SHAP库在Python中实现SHAP值很容易,许多在线教程已经解释了如何实现。然而,我发现所有整合SHAP值到Python代码的指南都存在两个主要缺陷。...机器学习中的不同评估程序。 另一个缺点是:我遇到的所有指南都没有使用多次交叉验证来推导其SHAP值 虽然交叉验证比简单的训练/测试拆分有很大的改进,但最好每次都使用不同的数据拆分来重复多次。...SHAP值的基本实现 无论何时,当使用各种循环构建代码时,通常最好从最内部的循环开始向外工作。试图从外部开始构建代码,按运行顺序构建代码,容易混淆且在出现问题时更难进行故障排除。...这是通过循环遍历数据集中的所有样本并在我们的空字典中为它们创建一个键来实现的,然后在每个样本中创建另一个键来表示交叉验证重复。...这很容易实现,只需更新代码末尾的一些行,以便我们不再将每个样本的SHAP值列表附加到列表中,而是更新字典。

    20710

    由一个简单的Python合并字典问题引发的思考,如何优化我们的代码?

    作者: Lateautumn4lin 来源:云爬虫技术研究笔记 AKA 逆向小学生 今天我们的题目是《由一个简单的Python合并字典问题引发的思考,如何优化我们的代码?》,为什么会有这个话题呢?...起因是今天和一位刚刚面试完Python开发岗位的朋友交流,这个问题也是他在面试中遇到的问题: 怎么用一个简单的表达式合并Python中的两个Dict? 我相信很多人会质疑这个问题很需要解答吗?...,也就是我们将会在内存中创建两个列表,然后在内存中创建第三个列表,其长度等于前两个字典的长度,最后丢弃所有三个列表以创建字典,就是我们需要的Dict。...由于这种情况的存在,我们看看在django中修复的用法示例。 字典旨在获取可散列的键(例如,frozenset或tuple),但是当键不是字符串时,此方法在Python 3中失败。...不过根据我的理解(以及对大佬的话的理解),dict(**y)命令的预期用途是为了创建可读性强的字典,例如: dict(a=1, b=10, c=11) 用来代替 {'a': 1, 'b': 10, 'c

    1.4K10

    pythonic之路(一)

    pythonic之路(一) 一、 中不要直接将语句与 、 、 做比较 python中隐含为 的对象: 数值 (不是字符 ) 空容器,比如空list 、空tuple 、空dict 、空str 其余的则隐含为...但是,如果一个程序的关键字参数默认值为 ,代码需要判断输入是否为 ,则必须显式的与 比较,即 假如写为 那么 也被排除在外,如果参数 是一个序列的指标(index)则0显然是其中一个而不应该被排除。...所以, 是个例外,对于其他的条件判断,直接用python隐含的 和 来做比较,而不是 。...问题代码: 改进代码: 总的来说,要在函数里重新初始化形参,这样每次调用时都是以初始化的形参来接收实参,从而避免了累加。这对初学者来说可能是个陷阱,但老司机一般不会犯这样的错。...三、用 表示list的剩余元素 四、通过字典 给变量提供默认值 字典方法 实现了一个条件判断功能。 。 一个原理验证例子。 一个有点用处但语法啰嗦的例子。 用 改进版。

    526100

    功能式Python中的探索性数据分析

    面向对象的纯粹主义者会反对这个策略。 “为什么不扩展DictReader?”他们问。我没有一个很好的答案。我倾向于函数式编程和组件的正交性。...从SimpleNamespace的属性中,我们添加了vars()函数来提取字典 。 我们可以用其他函数把它写成一个函数来保留句法对称性。...它看起来像是正确的函数式编程,但是这种实施在Pythonic函数式编程形式中指出了一些限制。要么我们必须对数据进行排序(创建列表对象),要么在分组数据时创建列表。...为了做好几个不同的统计,通过创建具体的列表来分组数据通常更容易。 我们现在正在做两件事情,而不是简单地打印行对象。 创建一些局部变量,如svc和m。我们可以很容易地添加变化或其他措施。...使用没有参数的vars()函数,它会从局部变量中创建一个字典。 这个使用vars()而没有参数的行为就像locals()一样是一个方便的技巧。

    1.5K10
    领券