首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从长文本文件中的字符串数组中找到相应的数字。

从长文本文件中的字符串数组中找到相应的数字。
EN

Stack Overflow用户
提问于 2021-11-23 05:54:15
回答 1查看 160关注 0票数 1

我有一个文本文件,它的单个字符串格式如下,每个数字nad名称都是唯一的:

{"5-6位数字“:”名称“,"5-6位数字”:“名称”,“……”,"5-6位数字“:”名称“}

我还有一个Python数组,它包含200个唯一的名称字符串,我想遍历这个数组来找到匹配的5-6位数字,并将其存储为一个元组。由于文本文件中的单个字符串有"5-6位数字“:”name“位24,000次,所以问题是不确定有什么合适的方法来做到这一点。是否应该读取文本文件并将每个元素存储为数组,并对其进行搜索,或者使用类似于SQL的方法,或者使用不同的方法。

这里有一个例子来说明:

文本文件:

{“774774”:“约翰”,“775005”:“史蒂夫”,“35942”:“雅各布”,.,“768252”:“马特”} (24,000元素)

Python数组:

'Jacob', 'Janet', ...,'John'

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-23 05:57:56

听起来你需要从名字到数字的逆映射。您可以对此使用dict理解,只需按以下方式翻转key: value语法:

代码语言:javascript
复制
num_to_name = {"774774":"John","775005":"Steve","35942":"Jacob", "768252":"Matt"}

name_to_num = {v: k for k, v in num_to_name.items()}

print(name_to_num)
# {'John': '774774', 'Steve': '775005', 'Jacob': '35942', 'Matt': '768252'}

一旦有了名称到数字的映射,就可以简单地使用键查找来查找名称列表中每个名称的6位数字:

代码语言:javascript
复制
array = ['Jacob', 'Janet', 'John']

for name in array:
    print(name, name_to_num.get(name, -1))  # where -1 when no number exists for name

退出:

代码语言:javascript
复制
Jacob 35942
Janet -1
John 774774
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70076005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档