【发布时间】:2019-10-01 21:08:12
【问题描述】:
原谅这个复杂的标题,但我找不到更优雅的方式来表达这个问题。我可以找到can be found here 的壁橱问题,但它并没有完全让我到达那里。
假设有许多不同长度的字典:
dict_1 = {'A':4, 'C':5}
dict_2 = {'A':1, 'B':2, 'C':3}
dict_3 = {'B':6}
这些字典的共同点是它们都共享此列表中的键:
my_keys= ['A','B','C']
但有些缺少一个或多个键。
目的是创建一个列表列表,其中每个列表元素是每个字典中所有现有值的列表,或“无”,其中不存在特定键。它们的键本身在所有字典中都是相同的,可以忽略。
所以在这种情况下,预期的输出是:
final_list =
[[4,"None",5],
[1,2,3],
["None",6,"None"]]
我不确定如何处理它。您可以从my_keys 中的每个元素开始,并根据每个字典中的每个键检查它的存在;如果相关的 dict 有键,则将该键的值附加到临时列表中;否则,将附加“无”。一旦my_keys 全部迭代完毕,临时列表将附加到最终列表并重新开始循环。
至少对我来说,说起来容易做起来难。我尝试了很多东西(我不会费心发布,因为它们甚至没有接近)。所以我想知道是否有一个优雅的方法来解决这个问题。
【问题讨论】:
-
倒数第二段听起来是一个合理的算法。当您尝试编写一些 for 循环和字典查找来实现它时,究竟是什么问题?
-
@mkrieger1 - 我被自己的鞋带缠住了,运行嵌套的
for循环(而且可能没有足够的咖啡......),而我真正需要的是一个像下面这样的简单解决方案。
标签: python list dictionary