我试图跟踪"禁止"用户在我的应用程序 用户名,minutes_banned,channel_banned_from
joe,5,general
sally,10,other
bob,50,gaming
我将文件读到一个列表,它由列表列表组成。
我发现很难处理这种形式的数据。例如,我无法让它只输出用户名。
我也不确定如何跟踪每组数据。如果我把bob作为用户名并想检查他被禁止多长时间..我如何将bob与50联系起来?
谢谢。
答案 0 :(得分:3)
如果用户名是唯一的,并且您不关心特定订单,请将其保存在dict
:
banned = {'joe': (5, 'general'), 'sally': (10, 'other')}
print "Bob's ban duration is", banned.get('bob', 'forever')
您可以按照不确定的顺序获取所有用户名,例如:all_usernames = banned.keys()
,其中包含['sally', 'joe']
。
答案 1 :(得分:1)
这看起来像一个csv格式的文件,csv
模块似乎是一个很好的起点。 DictReader
将行读入字典,这使您可以按名称引用单元格。您可以从那里读取一个表格(list
dicts
)。然后,创建要使用最多的字段的索引。索引是引用表中dict
的另一个dict
。
import csv
with open('banned.txt', newline='') as fp:
reader = csv.DictReader(fp)
reader.fieldnames = ['username','minutes_banned','channel_banned_from']
table = list(reader)
user_index = {entry['username']:entry for entry in table}
user = input('check banned user name: ')
if user in user_index:
print('banned', user_index[user]['minutes_banned'])
else:
print('invalid user')