我正在尝试以字典格式打印输入的所有3个名称的结果。下面的当前代码仅打印出姓氏。注释掉(#)的2行是我试图改变它以使其工作,显然没有正确地做。
def name():
count = 0
while (count < 5):
d = {}
qs = dict(Fname='first name', Lname='last name')
for k,v in qs.items():
d[k] = input('Please enter your {}: '.format(v))
#d['first name'].append(v)
#d['last name'].append(v)
count += 1
print(d)
name()
答案 0 :(得分:3)
我要改变的一些事情:
dictionary
)附加到list
个条目。for-loop
而不是while
作为更少的代码行。entries
列表,而不是print
,因为它是function
所以我希望有输出。所以这是更正后的代码:
def name():
entries = []
for count in range(5):
d = {}
qs = dict(Fname='first name', Lname='last name')
for k, v in qs.items():
d[k] = input('Please enter your {}: '.format(v))
entries.append(d)
return entries
print(name())
出于测试目的,我将其修改为除2
条目以外的其他条目,但我们仍然可以看到它有效:
Please enter your last name: fish
Please enter your first name: bowl
Please enter your last name: cat
Please enter your first name: mat
[{'Lname': 'fish', 'Fname': 'bowl'}, {'Lname': 'cat', 'Fname': 'mat'}]
答案 1 :(得分:2)
希望!你从Martijin评论中得到了正确,以便参考其他添加此代码:
def name():
count = 0
listOfDict = [] #creating empty list
for count in range(3):
dict = {}
qs = dict(Fname = 'first name', Lname = 'last name' )
for k,v in qs.items():
d[k] = input('please enter your {}: '.format(v))
listOfDict.append(d) # adding each item to the list.
count += 1
print listOfDict
name()
答案 2 :(得分:1)
这应该有效:
def name():
count = 0
while (count < 5):
d = {}
qs = dict(Fname='first name', Lname='last name')
for k,v in qs.items():
a = input('Please enter your {}: '.format(v))
d[v] = a
count += 1
print(d['first name'],d['last name'])
name()
答案 3 :(得分:1)
您可以使用defaultdict
自动创建列表来存储每个输入的值。主要思想是您希望将每个输入的值附加到某种类型的集合(例如列表)。
from collections import defaultdict
number_of_entries = 3
dd = defaultdict(list)
for _ in range(number_of_entries):
for key in ('first name', 'last_name'):
dd[key].append(input('please enter you {}: '.format(key)))
>>> print(dict(dd))
{'first name': ['Adam', 'Milton', 'Irving'],
'last_name': ['Smith', 'Friedman', 'Fisher']}