首页
学习
活动
专区
工具
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.

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

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

    72780

    让你 Python 代码优雅又地道

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

    64100

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

    71640

    让你 Python 代码优雅又地道

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

    78820

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

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

    37550

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

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

    55350

    友好 Python:扩展友好

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

    18620

    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+,用这种方法是很不错选择

    59220

    编程教室毕业

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

    62230

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

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

    58820

    Python(一)让你代码更加pythonic

    关键词:python; pythonic pythonic就是让你代码更加具有python特色,通常是利用python独有的一些语法实现。...其中,python语言真值表如下: ? ? 字符串反转 ? ? 字符串列表拼接 ? ? 列表推导 ? ? 相应地,还有字典推导(python2.7及以上版本支持) ? ?...字典默认值 dictget(key,default)方法用来获取字典key值。如果字典不存在该key,则将key赋值为default。这样就省去了写if…else…繁琐。 ? ?...for...else...语句 for...else...语句中else可以用来处理没有for循环中断情况。这样,就不用额外再设置一个状态变量来检查是否是for循环中断代码变得简洁。 ?...文件打开和关闭 使用with方法,Python将自动管理文件流打开与关闭,无需手动操作。 ? ? 怎么样,pythonic写法是不是简练、优美!

    56920

    pythonic之路(一)

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

    522100

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

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

    17210

    功能Python探索性数据分析

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

    1.5K10
    领券