Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较基于键的dict并创建一个缺少键的新dict,python3中的值为0_Python_Python 3.x_Dictionary - Fatal编程技术网

比较基于键的dict并创建一个缺少键的新dict,python3中的值为0

比较基于键的dict并创建一个缺少键的新dict,python3中的值为0,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有三个口述,分别是口述a,口述b和口述c dict_a={'key1':a, 'key2':b, 'key3':c} dict_b={'key1':a, 'key2':b, 'key4':d} dict_c={'key3':c, 'key1':a, 'key5':e} 在这里,整体表示的键是:键1、键2、键3、键4、键5及其各自的值 我要寻找的是,例如,创建一个新的dict(或保留dict),并将每个dict中缺少的键与具有0值的总键和键进行比较,例如: dict_a={'key1':a,

我有三个口述,分别是
口述a
口述b
口述c

dict_a={'key1':a, 'key2':b, 'key3':c}
dict_b={'key1':a, 'key2':b, 'key4':d}
dict_c={'key3':c, 'key1':a, 'key5':e}
在这里,整体表示的键是:键1、键2、键3、键4、键5及其各自的值

我要寻找的是,例如,创建一个新的dict(或保留dict),并将每个dict中缺少的键与具有0值的总键和键进行比较,例如:

dict_a={'key1':a, 'key2':b, 'key3':c, 'key4':0, 'key5':0}
dict_b={'key1':a, 'key2':b, 'key3':0, 'key4':d, 'key5':0}
dict_c={'key1':a, 'key2':b, 'key3':c, 'key4':0, 'key5':e}
我在C语言方面很有经验,基于我对python的“有限知识”,我会用一堆if,else语句运行一个嵌套的for循环来解决这个问题,但是我知道python有一些工具,例如
zip
lamda
等,可以用一种简单的方式解决这个问题。但我不知道如何开始,甚至不知道是否有一个库可以解决这个问题

无论我是用缺少的键创建新的dict还是简单地替换现有的dict,都是可用的。

您可以这样做:

all_keys = set(dict_a).union(dict_b, dict_c)
default = 0

dct_a = {key: dict_a.get(key, default) for key in all_keys}
print(dct_a) # {'key2': 'b', 'key4': 0, 'key5': 0, 'key1': 'a', 
             #  'key3': 'c'}
…等等,其他的格言

一旦你收集了
所有的_键
就只需要一行代码就可以创建新的字典了
dict.get
是属于键的值(如果它存在的话)或
default
否则。

您可以这样做:

all_keys = set(dict_a).union(dict_b, dict_c)
default = 0

dct_a = {key: dict_a.get(key, default) for key in all_keys}
print(dct_a) # {'key2': 'b', 'key4': 0, 'key5': 0, 'key1': 'a', 
             #  'key3': 'c'}
keys=set(dict_a).union(dict_b, dict_c)
for a in keys:
   if a not in dict_a.keys():
      dict_a[a]=0
   if a not in dict_b.keys():
      dict_b[a]=0
   if a not in dict_c.keys():
      dict_c[a]=0
…等等,其他的格言

一旦你收集了
所有的_键
就只需要一行代码就可以创建新的字典了
dict.get
是属于该键的值(如果存在)或
default
否则

keys=set(dict_a).union(dict_b, dict_c)
for a in keys:
   if a not in dict_a.keys():
      dict_a[a]=0
   if a not in dict_b.keys():
      dict_b[a]=0
   if a not in dict_c.keys():
      dict_c[a]=0
使用集合避免重复,我们得到所有的键。现在我们知道了所有的钥匙。现在,我们检查这些键是否不在任何DICT中,如果不在,我们将它们与值0相加。这将给出所需的输出


使用集合避免重复,我们得到所有的键。现在我们知道了所有的钥匙。现在,我们检查这些键是否不在任何DICT中,如果它们不在,我们将它们添加为值0。这将提供所需的输出

您可以创建键的并集,然后创建新的字典,其中包含使用以前的值更新的所有键

all_keys = set(dict_a).union(dict_b, dict_c)
new_dict_a = dict.fromkeys(all_keys, 0)
new_dict_a.update(dict_a)
print(new_dict_a)
# {'key1': 'a', 'key2': 'b', 'key3': 'c', 'key4': 0, 'key5': 0}
其他的格言也一样:

new_dict_b = dict.fromkeys(all_keys, 0)
new_dict_b.update(dict_b)

new_dict_c = dict.fromkeys(all_keys, 0)
new_dict_c.update(dict_c)

dict.fromkeys
创建一个新字典,其中包含所有具有默认值的指定键(在本例中为
0
)然后,
更新
会覆盖原始字典中已有的值。

您可以创建一个键的并集,然后只创建一个新字典,其中包含使用以前的值更新的所有键

all_keys = set(dict_a).union(dict_b, dict_c)
new_dict_a = dict.fromkeys(all_keys, 0)
new_dict_a.update(dict_a)
print(new_dict_a)
# {'key1': 'a', 'key2': 'b', 'key3': 'c', 'key4': 0, 'key5': 0}
其他的格言也一样:

new_dict_b = dict.fromkeys(all_keys, 0)
new_dict_b.update(dict_b)

new_dict_c = dict.fromkeys(all_keys, 0)
new_dict_c.update(dict_c)

dict.fromkeys
创建一个新字典,其中包含所有具有默认值的指定键(在本例中为
0
),然后
update
覆盖原始字典中已有的值。

oh,不知道
dict.fromkeys
。一定要记住!谢谢。太好了,这正是我想要的。很高兴知道这些功能(更新、联合),感谢您不知道
dict.fromkeys
。一定要记住!谢谢。太好了,这正是我想要的。很高兴了解这些功能(更新、联合),谢谢