比较基于键的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
。一定要记住!谢谢。太好了,这正是我想要的。很高兴了解这些功能(更新、联合),谢谢