我有下面的代码,它将比较两个字典b
和c
,并从中创建第三个名为d
的字典,其中包含比较b
和c
的结果,并取最高的一个:
b = {1:0,2:0,3:0,4:0,5:0}
c = {1:1,4:4,5:5}
d={k:c[k] if k in c and c[k]>b[k] else v for k,v in b.items()}
但是,由于字典没有排序,在比较它们之前,我必须使用以下语法将b
和c
转换为元组,以便它们的顺序正确:
b = sorted(b.iteritems())
c = sorted(c.iteritems())
这将产生以下输出:
b = [(1,0),(2,0),(3,0),(4,0),(5,0)]
c = [(1,1),(4,4),(5,5)]
但是,我现在不确定如何比较这两个元组并生成如下输出:
d=[(1,1),(2,0),(3,0),(4,4),(5,5)]
在Python2.7中似乎没有元组理解,除非我没有在正确的地方寻找答案。你知道吗
有人能帮忙吗?你知道吗
为什么不能对
d
的项进行排序?你知道吗我想这意味着您知道
c
的键是b
中键的子集。如果这不是真的,您需要获得键的并集,并比较每个dict的值:您可以向上面的代码段添加一行(最后一行):
你也可以做同样的事情,但是按照b的排序键的顺序,然后动态生成一个元组
或者有些人更喜欢
。。。如果存在一个小于所有可能b[k]的合适的负inf。对于数字,
None
可以使用相关问题 更多 >
编程相关推荐