Python 中使用字典代替动态变量名

2023-12-03

我有一个包含卡车配置的长文本文件。在每一行中,卡车的一些属性都以字符串形式列出。每个属性在字符串中都有自己固定宽度的空间,例如:

2 chracters = number of axles
2 characters = weight of the first axle
2 characters = weight of the second axle
...
2 characters = weight of the last axle
2 characters = length of the first axle spacing (spacing means distance between axles)
2 characters = length of the second axle spacing
...
2 characters = length of the last axle spacing

举个例子:

031028331004

指:

number of axles = 3
first axle weight = 10
second axle weight = 28
third axle weight = 33
first spacing = 10
second spacing = 4

现在,您对我的文件结构有了了解,这是我的问题:我想将这些卡车分组到单独的列表中,并根据轴间距命名列表。假设我使用布尔类型的方法,如果间距小于 6,则布尔值为 1,如果大于 6,则布尔值为 0。澄清一下,三轴卡车中可能的结果变为:

00 #Both spacings > 6
10 #First spacing < 6, second > 6
01 #First spacing > 6, second < 6
11 #Both spacings < 6

现在,如您所见,三轴卡车没有太多结果。然而,如果我有一辆 12 轴卡车,“可能”组合的数量就会变得混乱。问题是,实际上您不会在 12 轴卡车中看到所有“可能”的轴间距组合。有某些组合(我不知道是哪些,但弄清楚是我的目标),其数量远小于“可能”的组合数量。

我希望代码创建列表并用定义上面提到的属性的字符串填充它们if only这种组合是存在的。我想也许我应该创建带有变量名称的列表,例如:

truck_0300[]
truck_0301[]
truck_0310[]
truck_0311[]

在飞行中。然而,从我在科幻小说和其他来源中读到的内容来看,强烈建议不要这样做。你会如何使用字典的概念来做到这一点?我知道字典就像二维数组,有一个键(在我的例子中,键是卡车_0300、卡车_0301等)和值对(在我的例子中,值可能是包含实际字符串的列表)属于相应的卡车类型),但是我无法弄清楚如何创建该字典,并用变量键和值填充它。

任何见解都将受到欢迎! 非常感谢!


您绝对是正确的,尝试在作用域中创建“动态变量”几乎总是一个坏主意。字典通常是随着时间的推移建立对象集合并引用它们的答案......

我不完全理解你的应用程序和格式,但一般来说,定义和使用你的字典它看起来像这样:

trucks = {}
trucks['0300'] = ['a']
trucks['0300'].append('c')
trucks['0300'].extend(['c','d'])

aTruck = trucks['0300']

现在,由于其中每一个都应该是字符串列表,因此您可能只想使用 defaultdict,并告诉它使用列表作为不存在键的默认值:

from collections import defaultdict

trucks = defaultdict(list)
trucks['0300']
# []

请注意,即使这是一个不包含任何条目的全新字典,“truck_0300”键仍然返回一个新列表。这意味着您不必检查密钥。只需附加:

trucks = defaultdict(list)
trucks['0300'].append('a')

A defaultdict可能是您想要的,因为您根本不必预先定义键。当你准备好时它就在那里。

获取最大值的键

根据您的评论,这里是如何获取具有字典最大值的键的示例。这非常简单,因为您只需使用max并定义如何确定用于比较的密钥:

d = {'a':10, 'b':5, 'c':50}
print max(d.iteritems(), key=lambda (k,v): v)
# ('c', 50)
d['c'] = 1
print max(d.iteritems(), key=lambda (k,v): v)
# ('a', 10)

您所要做的就是定义如何生成比较键。在这种情况下,我只是告诉它以值作为键。对于像这样的非常简单的关键函数,您只需告诉它从对象中提取索引或属性,您可以通过使用来提高它的效率operator模块,以便关键函数在 C 中而不是在 python 中作为 lambda:

from operator import itemgetter
...
print max(d.iteritems(), key=itemgetter(1))
#('c', 50)

itemgetter创建一个新的可调用对象,它将从循环传入的元组中提取第二项。

现在假设每个值实际上是一个列表(类似于您的结构)。我们将其设为一个数字列表,您想要找到具有最大总数的列表的键:

d = {'a': range(1,5), 'b': range(2,4), 'c': range(5,7)}
print max(d.iteritems(), key=lambda (k,v): sum(v))
# ('c', [5, 6])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中使用字典代替动态变量名 的相关文章

  • 如何使用 pyinstaller 包含文件?

    我也使用 tkinter 使用 python 3 7 编写了一个程序 由于我使用的是外部图片 因此当我将所有内容编译为一个 exe 时 我需要包含它们 我试过做 add data bg png files 但我仍然收到此错误 tkinter
  • JavaScript 相当于 Python 的参数化 string.format() 函数

    这是 Python 示例 gt gt gt Coordinates latitude longitude format latitude 37 24N longitude 115 81W Coordinates 37 24N 115 81W
  • Python有条件求解时滞微分方程

    我在用dde23 of pydelay包来求解延迟微分方程 我的问题 如何有条件地编写方程 例如目标方程有两个选项 when x gt 1 dx dt 0 25 x t tau 1 0 pow x t tau 10 0 0 1 x othe
  • Python从int到string的快速转换

    我正在用 python 求解大量阶乘 并发现当我完成计算阶乘时 需要相同的时间才能转换为字符串以保存到文件中 我试图找到一种将 int 转换为字符串的快速方法 我将举一个计算和 int 转换时间的例子 我正在使用通用的 a str a 但感
  • 使用 Django Rest 保存 Base64ImageField 类型会将其保存为原始图像。如何将其转换为普通图像

    我的模型中有 5 个图像字段 imageS imageS imageS imageS 和 imageE 我正在尝试按以下方式保存图像 图像的类型Base64ImageField images imageA imageB imageC ima
  • 登录网站并使用 python 请求下载文件

    我有一个带有 HTML 表单的网站 登录后 它会将我带到 start php 站点 然后将我重定向到overview php 我想从该服务器下载文件 当我单击 ZIP 文件的下载链接时 链接后面的地址是 getimage php path
  • 可以用 Django 制作移动应用程序吗?

    我想知道我是否可以在我的网站上使用 Django 代码 并以某种方式在移动应用程序 Flutter 等框架中使用它 那么是否可以使用我现在拥有的 Django 后端并在移动应用程序中使用它 所以就像models views etc 是的 有
  • 二维数组作为字典的项目

    我想用一个项目的几个属性填充字典 例子 我正在考虑拥有Item 1 and Item 2 as Dictionary键与array这将保留其属性 我需要能够单独访问项目的每个属性 因此将它们连接为一个字符串不是一种选择 我正在考虑类似下面的
  • python 中的 Johansen 协整检验

    我找不到任何有关在处理统计和时间序列分析 pandas 和 statsmodel 的 Python 模块中执行 Johansen 协整检验的功能的参考 有谁知道是否有一些代码可以执行时间序列之间的协整测试 现在 这已在 Python 的 s
  • 使用 scipy curve_fit 拟合噪声指数的建议?

    我正在尝试拟合通常按以下方式建模的数据 def fit eq x a b c d e return a 1 np exp x b c np exp x d e x np arange 0 100 0 001 y fit eq x 1 1 1
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no
  • `list()` 被认为是一个函数吗?

    list显然是内置类型 https docs python org 3 library stdtypes html list在Python中 我看到底下有一条评论this https stackoverflow com a 53645813
  • 具有屏蔽无效值的 pcolormesh

    我试图将一维数组绘制为 pcolormesh 因此颜色沿 x 轴变化 但每个 x 的 y 轴保持不变 但我的数据有一些错误值 因此我使用屏蔽数组和自定义颜色图 其中屏蔽值设置为蓝色 import numpy as np import mat
  • 在 Sphinx 中,有没有办法在声明参数的同时记录参数?

    我更喜欢在声明参数的同一行记录每个参数 根据需要 以便应用D R Y http en wikipedia org wiki Don t repeat yourself 如果我有这样的代码 def foo flab nickers a ser
  • Python 声音(“铃声”)

    我想让一个 python 程序在完成任务时通过发出嘟嘟声来提醒我 目前 我使用import os然后使用命令行语音程序说 进程完成 我更愿意它是一个简单的 铃 我知道有一个函数可以用于Cocoa apps NSBeep 但我认为这与此没有太
  • 为什么 smtplib.SMTP().sendmail 不发送 DKIM 签名邮件

    我已经在服务器上设置了 postfix 以及 openDKIM 当我跑步时 echo Testing setup mail s Postfix test my email address 我收到电子邮件 邮件标题中有一个DKIM Signa
  • 如何在 robobrowser-python 中发出 POST 请求

    http robobrowser readthedocs org en latest api html http robobrowser readthedocs org en latest api html 我正在尝试使用 APIbrows
  • Python 通过从现有 csv 文件中过滤选定的行来写入新的 csv 文件

    只是一个问题 我试图将 csv 文件中的选定行写入新的 csv 文件 但出现错误 我试图读取的 test csv 文件是这样的 两列 2013 9 1 2013 10 2 2013 11 3 2013 12 4 2014 1 5 2014
  • 如何为所有用户安装 Anaconda python?

    Anaconda python 发行版 https store continuum io cshop anaconda 非常方便地部署科学计算环境 SCE 并根据需要切换python版本 默认情况下 安装会将 python 定位到 anac
  • python sklearn中的fit方法

    我问自己关于 sklearn 中拟合方法的各种问题 问题1 当我这样做时 from sklearn decomposition import TruncatedSVD model TruncatedSVD svd 1 model fit X

随机推荐

  • 如何在 React 中下载图像?

    我想尝试通过单击按钮来下载图像 但是当我单击按钮时 它不是下载图像 而是直接打开图像 但是我想下载图片 那么在React中如何下载图片呢 a href https timesofindia indiatimes com thumb msid
  • 如何使用 python pyhs2 连接到 hive?

    我正在尝试使用访问配置单元pyhs2 我尝试了以下代码 示例 py import pyhs2 conn pyhs2 connect host localhost port 10000 authMechanism None user None
  • Shibboleth 可以与 Windows Azure 访问控制服务集成吗?

    我们的两个高等教育客户使用 Shibboleth 进行 SSO 我对 Shib 的经验为零 并且没有可供测试的实例 最终 我们希望将 Shib SSO 与 Windows Azure MVC Web 角色中的这些客户端集成 所以我的问题是
  • 检测数组 vb.net 2005 上重复数字的最快方法

    我有这个项目 让用户输入从 1 到 50 的 5 个不同的数字 但我想在保存到数据库之前验证它 我将是 5 个唯一的数字 最好和最快的方法是什么 您可以使用哈希集 T 的 检查这个 Dim numbers As IEnumerable Of
  • 如何更改面板滚动条的背景颜色?

    因此 我正在为我的应用程序制作一个深色模式选项 并且我希望滚动条的背景颜色也改变颜色 这样它就不会看起来不合适 我试图寻找解决方案 但到目前为止我只找到了控件中滚动条的代码 但我需要更改面板的滚动条 有人知道该怎么做吗 预先非常感谢 当我开
  • 如何将 SecureString 转换为 System.String?

    关于通过创建 System String 来取消 SecureString 的所有保留意见aside 如何做呢 如何将普通的 System Security SecureString 转换为 System String 我相信许多熟悉 Se
  • Cassandra 与日志记录活动

    我将卡桑德拉与昆德拉一起使用 我的问题很简单 有什么方法可以记录所有查询 请求到 Cassandra 吗 我想知道服务器站点上到底发生了什么 Regards Tom 为 org apache cassandra thrift Cassand
  • 在服务中处理 $http 响应

    我最近发布了我面临的问题的详细描述here在这样 因为我无法发送实际的 http请求时 我使用超时来模拟异步行为 在 Gloopy 的帮助下 从我的模型到视图的数据绑定工作正常 现在 当我使用 http代替 timeout 本地测试 我可以
  • 我的“重复排列”代码中的递归调用是否会累积而堵塞 RAM?

    一些背景知识 我是一名业余程序员 几个月前 在学习了一段时间的 Mathematica 编程 我的第一语言 之后 我利用业余时间学习了 Haskell 我目前正在阅读 Will Kurt 所著的第二本 Haskell 书 但要让自己对 Ha
  • 音频无法在 Android 中播放。 android.content.res.Resources$NotFoundException:资源 ID #0x0

    我正在尝试在 Android 中播放音频文件 但它似乎崩溃并给出了ResourcesNotFoundException 音频文件保存在 res 内的 raw 文件夹中 音频文件的名称由随机生成的数字确定 然后将其连接到 音频 int res
  • 如何关闭 iframe?

    打开 iframe 后 有时需要关闭它 到目前为止 我只是将 iframe 从其父节点中删除 从而将其与 DOM 断开 但是 我发现这并不会立即结束 iframe 的生命 并且它的 javascript 代码仍然可以回调到父窗口 而父窗口不
  • Spring 反应式的 Spring Security 会话超时

    我有一个集成了 Spring Security 的反应式应用程序 它是由 springinitializr 创建的 主要包含 3 个包 spring boot spring security 和 webflux 我试图通过以下配置来配置会话
  • gPRC(protobuf)可以返回空消息吗?

    我们的客户端调用 gRPC 服务器 理想情况下它应该返回 MyMessage 响应对象 但是这个MyMessage对象可以为null吗 或者gRPC不能返回null对象 因为如果它是null grpc会抛出异常 回答你的问题 检查这些谷歌文
  • 内联函数有什么好处?

    在 C 中使用内联函数的优点 缺点是什么 我发现它只会提高编译器输出的代码的性能 但是有了当今优化的编译器 快速的 CPU 巨大的内存等 不像 1980 年 优点 通过在需要的地方内联代码 您的程序将在函数调用和返回部分花费更少的时间 它应
  • Swift 数组中最大值及其索引的高效算法

    我编写了一个 Swift 算法 用于查找 Swift 数组中的最大值及其索引 这是受到 Matlab 和 Octave 中 max m 函数的启发 这里的专家能否提出一种提高该算法速度的方法 我的意思是它是否可以做得更快 或者您认为这对于大
  • 设置网页宽度

    我是网页设计新手 我想设置页面宽度 使其在 800x600 分辨率的屏幕上显示良好 我通常使用表格 但我在某处读到过度使用表格会降低网站的性能 我还可以使用什么其他东西以及如何设置宽度 使用 DIV 而不是表看起来像这样 div style
  • 自动布局、屏幕旋转和 UIView 动画

    我遇到了一个 UIView 问题 我将其添加到屏幕底部 并在按下按钮时将其动画化以填充大部分屏幕 视图将按预期上下动画并旋转 如果我尝试在横向时制作动画 它会中断并给出错误消息 Assertion failure in UIScrollVi
  • 单击联系人按钮时,在自定义表格视图控制器中显示 iOS 设备中的所有联系人,而不是设备的默认视图

    在我的应用程序中 当我单击联系人按钮时 我需要在自定义表视图控制器中显示设备中的所有联系人 我发现很多使用地址簿框架的演示 但其中的联系人使用 ABPeoplePickerNavigationController 以默认设备格式显示 但我需
  • Fluent Security - 配置参数化控制器操作

    我做了很多研究并测试了 FluentSecurity 库的 1 4 和 2 0 版本 但我似乎无法使用配置模式 configuration For
  • Python 中使用字典代替动态变量名

    我有一个包含卡车配置的长文本文件 在每一行中 卡车的一些属性都以字符串形式列出 每个属性在字符串中都有自己固定宽度的空间 例如 2 chracters number of axles 2 characters weight of the f