繁体   English   中英

dict中的int值附加为列表

[英]int values in dict appending as list

我有一个for循环,它将遍历多个字典并在通用键下添加值。 输入字典的键是字符串,值是int。 由于某种原因,它会将值添加为一个值的列表(eg {"01":[12],[44]}) 我希望它自己添加int,但由于某种原因而无法使它正常工作。 我正在使用下面的代码,我缺少什么吗?

    dw = defaultdict()
    dw = {}

    for key, value in listb.items():
        dw[key].append(value)

如果要放弃所有好的做法,而不使用defaultdict(list) ,则可以使用setdefault并在每次选择添加值时调用它。 这是低效的,不是惯用的,但是可以工作。

In [1]: from collections import defaultdict

In [2]: a = defaultdict(list)

In [3]: b = {}

In [4]: a[1].append(1)

In [5]: b.setdefault(1, []).append(1)

In [6]: a
Out[6]: defaultdict(list, {1: [1]})

In [7]: b
Out[7]: {1: [1]}

In [8]: 

如果您打算将键/值对添加到字典(而不是附加到数组),则为:

for key, value in listb.items():
  dw[key] = value

编辑:还是这样的事情,你正在追求?

   listb = {'1': 3, '2': 5}
   dw = {'1': 5, '2': 9}

   for key, value in listb.items():
      if key not in dw.keys():
          dw[key] = []
      else:
          dw[key] = [dw[key]]
      dw[key].append(value)

给出dw = {'2': [9, 5], '1': [5, 3]}

只要字典中的值是整数(不是列表):

dw = {}
for key, value in listb.items():
    try: # Key exists in dictionary and value is a list
        dw[key].append(value)
    except KeyError: # Key does not yet exist in dictionary
        dw[key] = value
    except AttributeError: # Key exist in dictionary and value is not a list 
        dw[key] = [dw[key], value]

如果你有一个listlistb = [{'a': 1, 'b': 2}, {'a': 3, 'b': 4, 'c': 5}, {'b': 1}] ,您可以尝试以下操作:

dw = {}

for d in listb:
    for k, v in d.items():
        if k in dw:
            if isinstance(dw[k], list):
                dw[k].append(v)
            elif isinstance(dw[k], int):                
                dw[k] = [dw[k], v]
        else:
            dw[k] = v

print(dw)

{'a': [1, 3], 'b': [2, 4, 1], 'c': 5}
>>> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM