我正在尝试遍历如下字典:
d = {
"list_one": [
"hello",
"two",
"three"
],
"list_two": [
"morning",
"rain"
]
}
我正在使用该功能:
def combine_words(d):
for k, v in d.items():
a = {k: ("|".join(v))}
return a
当我用print运行它时,我的输出只是一个键,一对值。我不确定这里发生了什么。我的理想输出是:
{
'list_one': 'hello|two|three',
'list_two': 'morning|rain'
}
答案 0 :(得分:6)
def combine_words(d):
for k, v in d.items():
a = {k: ("|".join(v))}
return a
这会不断地将字典重新分配给a,并且不会合并结果
def combine_words(d):
a = {}
for k, v in d.items():
a[k] = ("|".join(v))
return a
将继续在字典中添加新条目
答案 1 :(得分:4)
a
都会被新的dict
取代。您要了解字典。
def combine_words(d):
return {k: "|".join(v) for k, v in d.items()}
答案 2 :(得分:0)
问题在于,由于重新分配了a
,因此在for
循环的每次迭代期间都更改了a
的值。您可以修改代码来解决此问题:
for k, v in d.items():
a[k] = "|".join(v)
或者,您可以使用字典理解:
return {k: "|".join(v) for k, v in d.items()}