比较字典的键以添加到值 - Python

时间:2017-10-15 04:42:21

标签: python-3.x

我正在尝试比较字典中的键,这样如果有多个键具有不同的值,我可以将这些不同的值添加到该键中。比如说我们有dict {'a':'b','b':'c','c':'d'}我添加{'a':'c'}我想知道如何改变字典,现在它是dict {'a':'bc','b':'c','c':'d'}

5 个答案:

答案 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]