Python 处理文件读取的函数

Python 处理文件读取的函数,python,function,file,Python,Function,File,我有一个文件要读。每一行都有名字、年龄、身高和体重。文件中有很多行,我只需要名称。这是我的密码: import random import string dictionary = {} lst = [] with open("persons.dat","r") as file: for line in file: items = line.split(',') #this makes this ['Bill Johnson', '31', '196', '93']

我有一个文件要读。每一行都有名字、年龄、身高和体重。文件中有很多行,我只需要名称。这是我的密码:

import random
import string

dictionary = {}
lst = []

with open("persons.dat","r") as file:
    for line in file:
        items = line.split(',') #this makes this ['Bill Johnson', '31', '196', '93']
        key = items[0]
        dictionary[key] = []
        for i in range(1,len(items)):
            dictionary[key].append(int(items[i]))
    #print(dictionary)

    for key in dictionary.keys():
        lst.append(key)
    print(lst)


def generateGroup(sizeOfGroup):
    for names in range(sizeOfGroup):
       random_names = random.choice(lst)
    print(random_names)
我的代码按预期获取列表中的所有名称。该代码在
generateGroup()之前工作正常
我需要一个函数,该函数将要求列表中的一组(一些数字)的大小,并从该列表中随机给出名称

我不知道如何实现这个功能。我有点了解函数的逻辑,但我不知道应该将函数放在代码中的什么位置(比如哪一行)。

随机。sample
就是这样做的

def generateGroup(sizeOfGroup):
    print(random.sample(lst, k=sizeOfGroup))

random.sample
返回一个列表。你可以自己积累清单

random_names = []
for names in range(sizeOfGroup):
     random_names.append(random.choice(lst))
print(random_names)
但是,
random.sample
确保您不会两次选择相同的名称

正确定义
generateGroup
后,仍然需要使用参数调用它:

while True:
    try:
        n = int(input("Enter a number: "))
        break
    except ValueError:
        print("That's not an integer, try again")

generateGroup(n)

这并不能真正回答我的问题,你的意思是,你从哪里得到传递给
generateGroup
(顺便提一下,它不能按预期工作,因为它只打印一个随机名称)?我的意思是,例如:现在它只打印名称列表,但def generateGroup(sizeOfGroup)函数根本不工作,好像它什么都不印。它应该使用我从读取该文件中创建的lst,函数应该询问一些数字,比如4,然后从该lst中打印出4个随机名称。您是否调用
generateGroup
?你展示的只是定义它。