dict中的int值附加为列表

时间:2017-12-19 04:26:20

标签: python

我有一个for循环,它通过多个字典并在公共密钥下添加值。输入字典具有字符串和值为int的键。由于某种原因,它将值添加为一个值(e.g. {"01":[12],[44]})的列表。我希望它自己添加int,但由于某种原因无法使其工作。我正在使用下面的代码,有什么我想念的吗?

    dw = defaultdict()
    dw = {}

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

4 个答案:

答案 0 :(得分:0)

如果您想放弃所有良好做法而不使用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]: 

答案 1 :(得分:0)

如果你想将键/值对添加到字典中(而不是附加到数组),那就是:

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]}

答案 2 :(得分:0)

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

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]

答案 3 :(得分:0)

如果你有list listb = [{'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}
>>>