有没有一种方法可以导入文本文件并分配不带值的键?我这样做是为了从另一个文本文件导入其他值,以便将它们指定为键的值。
例如,我会从一个文本文件中获取一个名称并将其指定为关键字,然后从另一个文本文件中获取他们的银行帐号、金额、id号并将这些值分配给关键字。
我知道如何从单个文本文件中导入带有键和值的文本文件,但我不知道如何分别执行该操作并将其分配给一个键值对。
谢谢。
发布于 2015-02-23 09:10:10
每个dict
对每个键都有一个值--对于一个或多个键,没有“没有值”这回事。但是,您可以将值设置为占位符,例如None
,然后在您确切知道每个给定键的值之后,只需重新分配它即可。
发布于 2015-02-23 09:14:40
在判断书中,不能不赋值就赋值,反之亦然。但您可以将值覆盖到给定键,因此:
d["name"] = None
[...]
d["name"] = data
都会起作用的。
另一方面,如果您不想这样做,您可以只将键(或数据)保存在临时变量中:
temp_dict_entry = [None, None]
temp_dict_entry[0] = "name"
[...]
temp_dict_entry[1] = data
[...]
d[temp_dict_entry[0]] = temp_dict_entry[1]
我在这里写的方式并不好,但可能会根据上下文(可能)而有所帮助。例如,如果您在知道密钥之前就知道了数据,那么这将是可行的,而这在第一个解决方案中是行不通的。
发布于 2015-02-23 09:15:12
您可以只在第一次读入准关键字时创建一个占位符值。例如,如果您想要的值是一个由银行帐号、金额和id号组成的三元组,那么您可以将一个“未填充”的值表示为(None, None, None)
。
在代码中,这意味着当您第一次尝试将密钥放入dict
时,只需将(None, None, None)
作为值:
some_dict = {}
with open('some_file.txt', 'r') as the_file:
for line in the_file.readlines():
key_name = compute_key_name(line)
some_dict[key_name] = (None, None, None) # place holder
然后,当您稍后读取实际值时,您可以这样做
with open('some_other_file.txt', 'r') as the_other_file:
for line in the_other_file.readlines():
key_name, bank_acct, money, id_num = compute_info(line)
some_dict[key_name] = (bank_acct, money, id_num)
在这里,我使用了一些组合函数compute_key_name
和compute_info
来表示在准备将数据写入dict
之前循环中可能出现的任意文件处理逻辑。
https://stackoverflow.com/questions/28665515
复制相似问题