3 回答
![?](http://img1.sycdn.imooc.com/5333a0780001a6e702200220-100-100.jpg)
TA贡献1810条经验 获得超4个赞
正如其他人告诉你的那样,你正在迭代字典,并且在每次迭代中,键和值都会被替换并打印在新行中。
如果你想使用字典在一行中打印,你可以尝试将字典转换为数组并使用 format 方法打印。
Emm = {
'name' : 'Emmylou',
'graduate' : 'Fall 2021',
'bill' : 'paid',
'major' : 'Archeology',
'clubs-' : 'Photography, Acting and Glee'
}
items = []
for (key, value) in Emm.items():
items = items + [key, value]
print("Her {} is {} and she is on track to {} in {}; Her {} is {}; Her {} is {}; She belongs to these school {} {}".format(*items))
![?](http://img1.sycdn.imooc.com/54584c9c0001489602200220-100-100.jpg)
TA贡献1796条经验 获得超4个赞
首先,我假设您实际上已经在代码中缩进了 print 语句,否则它根本无法工作。
问题是,对于每个循环,您都在所有位置填写相同的键/值对。
根据目的,您可以通过执行以下操作来获得声明:
Emm = {'name' : 'Emmylou', 'graduate' : 'Fall 2021', 'bill' : 'paid', 'major' : 'Archeology', 'clubs-' : 'Photography, Acting and Glee'}
print(f"Her name is {Emm['name']} and she is on track to graduate in {Emm['graduate']}; Her major is {Emm['major']}; Her clubs - is {Emm['clubs-']}")
迭代字典时可能面临的另一个问题是,除非使用 python 3.7 或更高版本,否则无法保证项目在字典中保存的顺序。因此,您的键/值对可能不会按照它们进入的顺序出现。
![?](http://img1.sycdn.imooc.com/545868cd00013bbb02200220-100-100.jpg)
TA贡献1942条经验 获得超3个赞
在您的代码中,您将迭代数据中的每个键值对;因此,您最终打印了 5 次,每次都使用一个键值对,而不是打印 1 次,每次都使用所有键值对。
尝试这个。
Emm = [
('name', 'Emmylou'),
('graduate', 'Fall 2021'),
('bill', 'paid'),
('major', 'Archeology'),
('clubs-', 'Photography, Acting and Glee'),
]
flat_items = [item for pair in Emm for item in pair]
print("Her {} is {} and she is on track to {} in {}; Her {} is {}; Her {} is {}; She belongs to these school {} {}".format(*flat_items))
添加回答
举报