将 python 中的单个有序列表转换为字典

2023-12-01

我似乎无法找到一种优雅的方式来开始t并导致s.

>>>t = ['a',2,'b',3,'c',4]
#magic
>>>print s
{'a': 2, 'c': 4, 'b': 3}

我想出的解决方案似乎不太优雅:

s = dict()
for i in xrange(0, len(t),2): s[t[i]]=t[i+1]
# or something fancy with slices that I haven't figured out yet

这显然很容易解决,但是,似乎还有更好的方法。有没有?


I'd use itertools,但是,如果您认为这很复杂(正如您在评论中暗示的那样),那么也许:

def twobytwo(t):
  it = iter(t)
  for x in it:
    yield x, next(it)

d = dict(twobytwo(t))

或者同等地,再次回到 itertools,

def twobytwo(t):
  a, b = itertools.tee(iter(t))
  next(b)
  return itertools.izip(a, b)

d = dict(twobytwo(t))

或者,如果您坚持要排队,请以适合季节的“不给糖就捣蛋”的心情:

d = dict((x, next(it)) for it in (iter(t),) for x in it)

我认为这是一个技巧,但有些人可能会觉得这是一种享受。 IOW,我觉得这种事情很可怕,但显然在美国每年的这个时候事情都是这样的supposed成为;-)。

基本上,问题归结为“我如何一次遍历列表 2 个项目”,因为dict很高兴将 2 元组序列放入字典中。我在这里展示的所有解决方案仅确保O(1)占用了额外的空间(显然超出了空间O(N),当然,这是输入列表和输出字典所需要的)。

中建议的方法docs(每个人都应该熟悉该页面,itertool 食谱)是函数pairwise在该页面上,这基本上是我在这里建议的第二个页面。我确实认为每个 site-packages 目录都应该包含一个iterutils.py包含这些食谱的文件(可惜这样的文件还没有成为 python 的 stdlib 的一部分!-)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 python 中的单个有序列表转换为字典 的相关文章

随机推荐

  • java中从HTML中删除css信息

    是否有任何库或预先编写的代码可以从 HTML 代码中删除 css 属性 要求是 Java 代码必须解析输入的 html 文档 并删除 css 属性并生成输出 html 文档 例如 如果输入 html 文档具有此元素 p class abc
  • CasperJS/PhantomJS .then 在 do/while 循环中不起作用

    像这样的事情对我来说似乎很合乎逻辑 但导致幻像 wtfcrash 这就是它在日志中的名称 但没有提供有用的信息 do casper then function var targetFound false links this evaluat
  • Java 反射:创建一个实现类

    Class someInterface Class fromName some package SomeInterface 我现在如何创建一个新类来实现someInterface 我需要创建一个新类 并将其传递给需要的函数SomeInter
  • 如何在 android 中的 EditText 上显示数字键盘?

    我基本上只是想在某个 EditText 获得焦点后立即切换到数字键盘模式 您可以配置一个inputType为您EditText
  • 从另一个类方法更新 UI - Cocoa

    我想从 AppDelegate 更新应用程序中的 UI 但每当我这样调用它时 Controller object Controller alloc init object methodHere 好像没有更新UI 我在这里做错了什么 我已经放
  • 如何在flutter图表中显示json数据

    我对 flutter 还很陌生 我一直在尝试在条形图中显示来自 http 请求的一些数据 我找不到任何这方面的例子 我希望你们中的一些人能够提供帮助 我想用这个Chart来自在线画廊 我刚刚更改了我的应用程序的类名称 import pack
  • Sitecore 站点/项目发布在初始化时挂起

    我们的核心数据库出现问题 该数据库已由前一天的备份数据库恢复 之后 该网站工作正常 但我们在发布任何更改时遇到问题 一旦点击发布按钮 发布正在初始化 消息就会持续很长时间 截至 发布开始 结束 的事件日志中也未捕获到这一点 因此 当我们尝试
  • 如何重新启用 event.preventDefault?

    我有一个网页 已阻止所有提交按钮上的默认操作 但是我想重新启用按钮上的默认提交操作 我该如何执行此操作 我目前正在使用以下方法阻止默认操作 form bind submit function e e preventDefault 我已经使用
  • Android SwitchCompat风格

    我在我的新设备上使用 Android 5 1 1 测试了我的应用程序 在我的 SettingsActivity 中我有一个开关 我已经阅读了一些帖子并将其更改为android support v7 widget SwitchCompat但问
  • C中父进程向子进程发送信号

    我的子进程无法开始工作 我需要传递信号并执行readUsual功能 这是一小段代码 int main pid t pid2 fork if pid2 lt 0 printf Can t create child process n else
  • Julia 变量范围

    我试图在 while 循环中使用一些全局变量 m n r 但 Julia 1 0 0 告诉我这些变量未定义 该代码适用于 julia 0 7 0 但有一些警告 这是我正在使用的代码 是的 写得不好 我希望这不是问题 我删除了一个printl
  • Zend 框架和 Wordpress 集成

    这是我的问题 我有 require once application bootstrap php 在我的 zf 网站根文件夹中的 index php 中 我将 WordPress 博客放入 public html blog 中 我需要将 W
  • 在 Java Applet 中单击后 JButton“保持按下状态”

    我的 Java Applet 中有一个 JButton 按下按钮后 ActionListener 必须执行大量操作 因此 正因为如此 当用户单击按钮时 它会 保持按下 一段时间 有时甚至 5 分钟 而不是立即禁用自身 它会在这 5 分钟后自
  • 谷歌云存储访问的公共URL被拒绝

    我有这个 URL 但访问被拒绝 需要任何权限 https storage googleapis com BUCKET Artboard 4 png 出现此错误 匿名调用者没有 storage objects get 访问 Google Cl
  • 从所有子集中恢复原始数组

    给定一个数组的所有子集和 然后 您应该从提供的子集和中恢复原始数组 原始数组中的每个元素都保证为非负且小于 10 5 原始数组中的元素不超过 20 个 原数组也已排序 保证输入有效 实施例1 如果提供的子集总和是这样的 0 1 5 6 6
  • Microsoft CryptoAPI:如何将 PUBLICKEYBLOB 转换为 DER/PEM?

    我有一个生成的 RSA 密钥对 存储为 PRIVATEKEYBLOB 和 PUBLICKEYBLOB 并且我需要能够将这些密钥转换为 DER 或 PEM 格式 以便我可以在 PHP 或 Python 中使用它 我发现我可以使用 CryptE
  • Pymongo forEach 格式化

    如何格式化 forEach 函数 使其可以驻留在多行上而不会导致语法错误 就像是 self request db myCollection find forEach function u u forSong self request db
  • 带 + 和 - 的 WPF 扩展器按钮样式

    样式专家 我需要帮助设计一种类似于 Visual Studio 代码编辑器中的 Expander 样式 到目前为止 我已经想出了这个
  • 我的 Visual Studio 2012 中的行号旁边出现了彩色条

    今天 当我在工作中启动 Visual Studio 2012 时 我发现了一些新的彩色条 我们通过 RDP 在共享远程服务器上工作 所以我四处询问是否有人安装或更新了任何东西 似乎没有人做过 任何事 我看到的酒吧有 我知道最左边的条 绿色和
  • 将 python 中的单个有序列表转换为字典

    我似乎无法找到一种优雅的方式来开始t并导致s gt gt gt t a 2 b 3 c 4 magic gt gt gt print s a 2 c 4 b 3 我想出的解决方案似乎不太优雅 s dict for i in xrange 0