确保列表中的所有字典都具有相同的键

2024-02-13

我有一个包含字典的列表,例如

[{'x': 42}, {'x': 23, 'y': 5}]

并希望确保所有字典具有相同的键,其值为None如果原始字典中不存在该密钥。所以上面的列表应该变成

[{'x': 42, 'y': None}, {'x': 23, 'y': 5}]

最美丽、最Python式的方法是什么?目前的方法:

keys = reduce(lambda k, l: k.union(set(l)), [d.keys() for d in my_list], set())
new_list = [dict.fromkeys(keys, None) for i in xrange(len(my_list))]
for i, l in enumerate(my_list):
    new_list[i].update(l)

但尤其是前两行似乎有点笨拙。有想法吗?


>>> from itertools import chain 
>>> l = [{'x': 42}, {'x': 23, 'y': 5}]
>>> all_keys = set(chain.from_iterable(l))   
>>> for d in l:
        d.update((k,None) for k in all_keys-d.viewkeys())


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

确保列表中的所有字典都具有相同的键 的相关文章

随机推荐

  • 在 UIPageViewController 中预加载下一页

    我已经看过很多很多地方 但还没有找到一些好的示例代码来展示如何在 UIPageViewController 中预加载 下一个 页面 关于 SO 有一些答案 详细介绍了一些理论上的方法 请参阅这个问题 https stackoverflow
  • Camera 和 SurfaceView 的奇怪行为

    我对 SurfaceView 的使用感到疯狂 我开发了一个以固定时间间隔拍照的应用程序 它与我的 Androd 2 3 设备配合良好 这是示例代码 public class MainActivity extends Activity pri
  • 在android studio中设置不同的语言

    我是 Android Studio 的新手 我正在尝试通过雅虎天气服务 JSON 数据制作我的简单应用程序天气信息 我想在我的应用程序中显示不同的语言 例如英语和阿拉伯语正在处理 string xml 并翻译一些主要活动中的单词 我尝试将条
  • RxJava 对列表执行操作并返回可观察值

    我是 RxJava 特别是 RxJava2 的新手 并且在看似相对简单的操作中遇到了一些麻烦 我需要从数据库获取一些数据 迭代数据 它表示为列表 对每个项目执行操作 将数据包装在另一个对象中并返回 这是我到目前为止所拥有的 mDataMan
  • 如何使用安卓exoplayer

    我正在寻求实施 Google 的ExoPlayer在我的应用程序中 他们的文档对我来说似乎相当模糊 我所寻找的只是从 URL 播放视频 没有复杂的自定义设置或类似的东西 尚未找到任何有关如何操作的教程 他们在 git 上提供的示例对于我的需
  • AVAudioEngine() 播放不工作

    我正在尝试使用改变声音的音调AVAudioEngine 在斯威夫特 这是我的代码 func setUpEngine let fileString NSBundle mainBundle pathForResource 400 ofType
  • C命令行密码输入

    我想允许用户使用命令行界面输入密码 但我不想在屏幕上显示此密码 或显示 在C语言中如何实现呢 谢谢 Update 我只在 Linux 上工作 所以我其实并不关心Win或者其他系统 我尝试了卢卡斯的解决方案 效果很好 不过 我还有一个问题 如
  • Java新线程需要内存

    我有一个大量创建线程的应用程序 结果我得到了内存不足错误 我的想法是等到有足够的可用空间来创建下一个Thread 但因此我需要知道创建一个线程需要多少内存以及这个内存量是否可用 有没有办法获取线程所需的内存量 我怎样才能确定这个内存量是否可
  • 为什么 UIButton 框架被 setTitle: forState: 方法重置

    问题如下 在某个时刻 按钮的位置发生了变化 此后 按钮的标题也必须更改 位置通过动画 UIView 动画块 更改 并且当设置标题时 帧返回到原始值 动画之前 那么 我该如何解决这个问题 为什么会发生这种情况 用代码更新 CGRect but
  • 如果客户端禁用了 Javascript,我该怎么办?

    我的网站严重依赖 Javascript 如果我将其关闭 我的网站就会看起来非常丑陋 我想通过向用户显示打开它的通知来强制用户使用 Javascript 否则提示他该网站无法查看 我该怎么做才能实现这一目标 看看这里 无脚本标签 http w
  • Android 设备可以同时在外围模式和中央模式下运行蓝牙 LE 吗?

    是否可以在运行外设和中央模式的 Android 设备中安装 LE 蓝牙 同时用于广告和收听 是的 您绝对可以作为外设并同时连接其他外设 对此的限制之一是设备限制 请下载BLE 中央 外设检查器请确保您的设备支持 BLE 外设 BLE 中央或
  • WinAPI:如何在自定义编辑控件中处理键盘输入

    因此 我使用 Windows API 在 C 中创建自己的编辑控件 多行文本框 一切进展顺利 但我对一件事有点困惑 首先 该控件被构建为能够处理 unicode 并且所有输入都将转换为 unicode 换句话说 所有输入都将存储为wchar
  • 如何在JavaEE中响应后执行代码

    我尝试找到一种在响应后运行代码的方法 但没有成功 就我而言 服务器向我发送数据以便让我完成工作 但此操作可能会很长 例如 向 5000 个联系人发送短信并检查谁收到了它 服务器期望立即收到 HTTP 204 No Content 响应 以确
  • 在 if/else 中使用 Promise

    我有一个条件语句 其中我需要执行两个操作之一 然后在任一操作解决后继续 所以我的代码目前如下所示 if shoud do thing a should do thing a is just a variable that determine
  • 从 Arraylist 中获取恰好出现 3 次的字符串

    我有一个ArrayList其中包含一些重复的值和出现三次的元素 我想将那些出现三次的值专门收集到另一个中ArrayList like Arraylist
  • 如何通过递减来拉伸 numpy 数组的特定项?

    给定边界值k 有没有一种矢量化的方式来替换每个数字n连续递减的数字从n 1 to k 例如 如果k是 0 我想更换np array 3 4 2 2 1 3 1 with np array 2 1 0 3 2 1 0 1 0 1 0 0 2
  • WTForms 不验证 - 没有错误

    我在使用 WTForms 库时遇到了一个奇怪的问题 为了进行测试 我创建了一个包含单个字段的表单 class ArticleForm Form content TextField Content 它接收一个简单的字符串作为内容 现在我使用f
  • 如何找出应用程序崩溃的原因 - Windows 10 LTSB

    我有使用 VS 2017 15 7 4 构建的应用程序 它是 64 位命令行 C 应用程序 我已将其与所有依赖项 DLL 一起复制到使用 Windows 10 Enterprise 2016 LTSB 64 位 版本为版本 10 0 143
  • @Published 属性包装器不适用于 ObservableObject 的子类

    我有一个符合 ObservableObject 协议的类 并使用它自己的变量和 Published 属性包装器创建了一个子类来管理状态 使用子类时 published 属性包装器似乎被忽略 有谁知道这是否是预期行为以及是否有解决方法 我正在
  • 确保列表中的所有字典都具有相同的键

    我有一个包含字典的列表 例如 x 42 x 23 y 5 并希望确保所有字典具有相同的键 其值为None如果原始字典中不存在该密钥 所以上面的列表应该变成 x 42 y None x 23 y 5 最美丽 最Python式的方法是什么 目前