所以,我有一个for循环,它创建了一些字典。最重要的是,我想将这些字典添加到列表中。 for循环可以正常工作,并且我可以分别打印字典,但是当我尝试将它们追加到列表中时,却没有得到想要的结果。我只是不知道我在做什么错。任何帮助将不胜感激!
# This is the dictionary I'll be altering:
user = {'user': 'nikos', 'areas': [{'Africa': ['Kenya', 'Egypt']}, {'Europe': ['Brexit']}]}
# these are some needed variables
user_new = [] # where the dictionaries will be added
sample_user = {}
这是我的代码:
for i in user['areas']:
sample_user['user'] = user['user']
for key in i:
sample_user['area'] = key #ok
kword = i.get(key)
kword = '$'.join(kword)
sample_user['keywords'] = kword
user_new.append(sample_user)
print(user_new)
print()
的理想结果是:
[{'user': 'nikos', 'area': 'Africa', 'keywords': 'Kenya$Egypt'},
{'user': 'nikos', 'area': 'Europe', 'keywords': 'Brexit'}]
但是我得到了两个列表:
[{'user': 'nikos', 'area': 'Africa', 'keywords': 'Kenya$Egypt'}]
[{'user': 'nikos', 'area': 'Europe', 'keywords': 'Brexit'}, {'user': 'nikos', 'area': 'Europe', 'keywords': 'Brexit'}]
答案 0 :(得分:0)
使用简单的迭代
例如:
user = {'user': 'nikos', 'areas': [{'Africa': ['Kenya', 'Egypt']}, {'Europe': ['Brexit']}]}
result = []
for i in user["areas"]:
val = list(i.items())
result.append({"user": user["user"], 'area': val[0][0], 'keywords': "$".join(val[0][1])})
print(result)
输出:
[{'area': 'Africa', 'keywords': 'Kenya$Egypt', 'user': 'nikos'},
{'area': 'Europe', 'keywords': 'Brexit', 'user': 'nikos'}]
答案 1 :(得分:0)
如果要坚持使用已有的代码,只需将sample_user = {}
移入循环内(并将print()
移入循环内)。因此代码将是:
for i in user['areas']:
sample_user = {}
sample_user['user'] = user['user']
for key in i:
sample_user['area'] = key #ok
kword = i.get(key)
kword = '$'.join(kword)
sample_user['keywords'] = kword
user_new.append(sample_user)
print(user_new)
因为现在您只是覆盖同一词典。