将新值添加到同一个字典键

时间:2016-11-19 08:50:39

标签: python dictionary append

我想将下面的词典合并为一个。

module.exports = function(sequelize, DataTypes) {
  var Todo = sequelize.define('Todo', {
    name: DataTypes.STRING,
    userId: DataTypes.INTEGER
  },{  
    classMethods: {
      associate: function(models) {
        Todo.belongsTo(models.User); }}});
  return Todo;};

最终输出应为单键值对,输出应为:

data1 = {
    'color': ['red', 'blue', 'green']
} # from 1st sku
data2 = {
    'color':[ 'red', 'yellow', 'orange', 'black']
} # from 2nd sku 
data3 = {
    'color': ['black', 'purple', 'yellow', 'pink']
} # from 3rd sku

i = 0    
dict={} # i want to create new dict with combination of all the available dict data in single dict with single key i.e(same key) with integrated values in a single list  
while i<10:   
    dict['color'] =  #how to process further

2 个答案:

答案 0 :(得分:0)

您可以尝试这种方式:

dicts = [data1, data2, data3]

total_dict = {}
for dict in dicts:
    key = dict.keys()[0]
    total_dict.setdefault(key, []).extend(v for v in dict[key] if v not in total_dict[key])

结果是:

total_dict = 
{'color': ['red', 'blue', 'green', 'yellow', 'orange', 'black', 'purple', 'pink']}

答案 1 :(得分:-1)

data1 = { 'color':['red','blue','green'] } #from 1st sku
data2 = { 'color':['red','yellow','orange','black'] } #from 2nd sku 
data3 = { 'color':['black','purple','yellow','pink'] } #from 3rd sku

datas = [data1, data2, data3]
results = {} 
for data in datas:
    for key, val in data.items():
        def_val = results.get(key, []) # if key not exists, return []
        def_val = set(def_val) | set(val) # merge two sets, and return unique items
        results[key] = list(def_val)

def main():
    print(results)
    # output: {'color': ['pink', 'blue', 'orange', 'green', 'black', 'yellow', 'purple', 'red']}

if __name__ == "__main__":
    main()

我认为此代码可以解决您的问题,只需复制即可尝试!

相关问题