打印Python中For Loop的所有字典结果

时间:2018-01-11 20:12:23

标签: python dictionary

我正在尝试以字典格式打印输入的所有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()

4 个答案:

答案 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']}