python字典mydt问题

2024-06-08 07:33:57 发布

您现在位置:Python中文网/ 问答频道 /正文

编写一个Python程序,从用户那里获取N个名称。从N个名称创建一个字典,这些名称将在单独的键中包含First_name、Middle_name和Last_name。输入将首先取N,然后取N个名称。您可以假设名称包含少于或等于3个单词

样本输入:

4

Zubayer Ahmed

Sadia Nur Amin

Mehedi Hasan Shawon

Nafis

样本输出:

 { "Fname" : [“Zubayer”, “Sadia”, “Mehedi”, “Nafis”] , "Mname" : [“Nur”, “Hasan”], "Lname" : [“Ahmed”, “Amin”, “Shawon”] }

Tags: 用户name程序名称字典样本ahmedamin
3条回答

在这个家庭作业中,你必须处理开头的4,并正确阅读以下输入行

在那之后,你会有一个名单,我认为最好的方法是以下

from itertools import zip_longest
names = ["Zubayer Ahmed","Sadia Nur Amin","Mehedi Hasan Shawon","Nafis"]

# split into single words
names = [x.split() for x in names]

# do a zip of the triads and remove None values
filtered = [ list(filter(None,_)) for _ in zip_longest(*names)]

#do the dict:
dict(zip( ("Fname","Mname", "Lname"), filtered))

输出:

{'Fname': ['Zubayer', 'Sadia', 'Mehedi', 'Nafis'],
 'Mname': ['Ahmed', 'Nur', 'Hasan'],
 'Lname': ['Amin', 'Shawon']}

以下是我的解决方案:

number_of_entries = int(input("How many entries would you like? "))

first_names = []
middle_names = []
last_names = []

i = 0
while i < number_of_entries:
    full_name = input(": ")
    names_array = full_name.split(' ')
    
    if len(names_array) >= 1:
        first_names.append(names_array[0])
    if len(names_array) >= 2:
        middle_names.append(names_array[1])
    if len(names_array) >= 3:
        last_names.append(names_array[2])


    i += 1

names_dictionary = { "Fname" : first_names, "Mname" : middle_names, "Lname" : last_names}
print(names_dictionary)

它的工作原理是首先将每个名称类别存储到一个数组中,然后在最后将其添加到字典中

这个问题要求您首先找到所需的名称数,这可以通过一个简单的input()调用来完成。 numNames = int(input("> "))

我们也可以这样准备字典 nameDict = {"Fname":[],"Mname":[],"Lname":[]}

然后我们需要根据用户输入的数字进行迭代 for i in range(numNames):

在上述for循环的每次迭代中,您需要向用户请求一个名称,然后将其拆分为每个名称的列表names = input("name {i+1} > ").split(" ")

然后,您可以将它们添加到字典中,因为问题需要使用基本选择

if len(names) >= 1:
    nameDict["Fname"].append(names[0])

    if len(names) == 2:
        nameDict["Lname"].append(names[1])
    elif len(names) == 3:
        nameDict["Mname"].append(names[1])
        nameDict["Lname"].append(names[2])

如果您能找到更好的方法将名称排序到字典中,那么这个解决方案可能会更有效

虽然StackOverflow并不能解决您的全部问题,但有关特定领域的问题更是如此。下一次试着解决这个问题,如果你对你尝试的细节感到厌烦,就发帖子

但无论如何,这是我的完整解决方案

numNames = int(input('names >'))

nameDict = {'Fname':[],'Mname':[],'Lname':[]}

for i in range(numNames):
    names = input(f'name {i+1} > ').split(' ')
    
    if len(names) >= 1:
        nameDict["Fname"].append(names[0])

        if len(names) == 2:
            nameDict["Lname"].append(names[1])
        elif len(names) == 3:
            nameDict["Mname"].append(names[1])
            nameDict["Lname"].append(names[2])

print(nameDict)

相关问题 更多 >

    热门问题