[英]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]
如果你有一个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}
>>>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.