我正在尝试比较字典中的键,这样如果有多个键具有不同的值,我可以将这些不同的值添加到该键中。比如说我们有dict {'a':'b','b':'c','c':'d'}我添加{'a':'c'}我想知道如何改变字典,现在它是dict {'a':'bc','b':'c','c':'d'}
答案 0 :(得分:0)
要使整个过程正常工作,你真的应该尝试编写一些代码。这是一些让你入门的灵感。
首先,您需要能够遍历Python dict并依次获取所有键和值:
for key, value in new_dict.items():
好的,这非常有用。
接下来,我们需要一种方法来了解新密钥是否将在旧的字典中。我们有两种方法可以做到这一点:
for key, value in new_dict.items():
if key in old_dict:
write some code that goes here
else:
write some alternate code here for when key isn't in the dict
或者,我们可以这样做:
for key, value in new_dict.items():
old_dict_key_val = old_dict.get(key)
if old_dict_key_val is not None:
write some code that goes here
else:
write some alternate code here for when key isn't in the dict
对于所有意图和目的,这些都非常相同。这应该足以让你入门!在那之后,如果你遇到困难,你可以回到这里提出具体问题。
祝你好好自己编写一些代码来解决这个问题!
答案 1 :(得分:0)
使用try / except有点不同寻常,但非常紧凑和Pythonic。
big_dict = {'a':'b','b':'c','c':'d'}
little_dict = {'a':'c'}
for key, value in little_dict.items():
try:
big_dict[key] += value
except KeyError:
big_dict[key] = value
答案 2 :(得分:0)
您可以使用包toolz(https://toolz.readthedocs.io/en/latest/index.html)中的整洁功能merge_with
。
该函数以下列方式工作:将参数(1)作为一个函数,该函数将使用相同的键处理来自不同dicts的值,以及(2)要合并的dicts。
from toolz import merge_with
d1 = {'a':'i','b':'j'}
d2 = {'a':'k'}
def conc(a):
return ''.join(a)
a = merge_with(conc,d1,d2)
>>> {'a': 'ik', 'b': 'j'}
答案 3 :(得分:0)
使用defaultdict
:
from collections import defaultdict
d = defaultdict(str)
d.update({'a': 'b','b': 'c','c': 'd'})
print(d)
// defaultdict(<type 'str'>, {'a': 'b', 'b': 'c', 'c': 'd'})
d.update({'a': 'c'})
print(d)
// defaultdict(<type 'str'>, {'a': 'bc', 'b': 'c', 'c': 'd'})
答案 4 :(得分:0)
我真的找到了解决问题的方法,谢谢你的回复 我所做的是抱歉对我的问题感到困惑。这允许我检查密钥是否在字典中,如果是,我可以将该密钥的值一起添加
for x in range(len(word))
key = word[x]
if key in dict:
dict[word[x]] = [word[x+1] + dict[word[x]]
else:
dict[word[x] = word[x+1]