Python字典条件字典

2024-04-19 12:26:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个函数。如果“source”在“d”中找到,那么它将被添加到dictionary对象的值中,否则它将被添加。例如在这种情况下。”“a”加两次,“b”加一次。在

我想得到如下输出(最后一行)

谢谢。在

def adder(source,dest,weight):
   """"""


if __name__ == "__main__":
  d = {} #dictionary
  adder('a','b',1)
  adder('a','f',4)
  adder('b','c',1)
  adder('f','g',3)

  print d

  {'a':{'b':1,'f':4}, 'b':{'c':1}, 'f':{'g':3},g:{},c:{}} #<----final o/p needed

Tags: 对象函数namesourcedictionaryifmaindef
3条回答

字典就是元组字典。你可以这样实现加法器:

#The dictionary we will be adding to
d = {}

def adder(source, dest, weight):
    d[(source, dest)] = weight

这样做的原因是,在任何产品类别中,Hom(C,Hom(B,A))自然与Hom(C x B,A)同构。或者在功能语言中

f:C->;(B->;A)

同:

f:C x B->;A

巧合的是,这也是为什么(A^B)^C=A^(B*C)。在

您可以使用一个简单的if条件:

In [9]: def adder(d,source,dest,weight):
   ...:     if source in d:
   ...:         d[source][dest] = weight
   ...:     else:
   ...:         d[source] = {dest: weight}
   ...: 

In [10]: d={}

In [11]: adder(d, 'a', 'b', 1)

In [12]: adder(d, 'a', 'f', 4)

In [13]: adder(d, 'b', 'c', 1)

In [14]: d
Out[14]: {'a': {'b': 1, 'f': 4}, 'b': {'c': 1}}

以下实施应做到这一点:

def adder(dict, source, dest, weight):
   if not source in dict:
     dict[source] = {}
   if not dest in dict:
     dict[dest] = {}
   dict[source][dest] = weight

请注意,我添加了dict作为您的方法的第一个参数。在

相关问题 更多 >