Python 3使用用户输入来访问另一个文件中的字典

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 3使用用户输入来访问另一个文件中的字典相关的知识,希望对你有一定的参考价值。

我想获取用户输入(current_input)并使用它来访问名为(john.py)的文件中名为(john)的字典。如果用户输入john,我希望for语句检查john.john并打印出键(x)和属性(john.john [x])。有任何想法吗?

import john
current_fugitive = input("Please enter the name of the fugitive: ")
if current_fugitive =="john":
    for x in current_fugitive.current_fugitive:
        print(x, current_fugitive.current_fugitive[x])

(编辑)有效的原始代码:

if current_fugitive =="john":
for x in john.john::
    print(x, john.john[x])
答案

你是说这个吗?


import john

def printDict(d):
    # d can be an empty dict
    for k in d:
        print(k, d[k])

tip = "Please enter the name of the fugitive: "
user_input = input(tip)
d = getattr(john, user_input, None)

if (type(d) is dict):   
    printDict(d)
else:
    print("Not a dict or doesn't exist")
另一答案

你不想这样做。这是初学者在为变量名赋值的地方所犯的常见错误。不要这样做 - 你的值有意义,但你的变量名应该是程序员清楚的好的描述性名称,但对程序没有任何意义。

最有可能的是,john.py应该是john.json,你应该这样做:

from pathlib import Path
import json

fugitives = {}

for fugitive_json in Path(__file__).glob("*.json"):
    # find all the *.json files that are sibling to the current file
    with fugitive_json.open() as f:
        new_fugitive = json.load(f)
        fugitives[fugitive_json.stem] = new_fugitive
        # Path("path/to/john.json").stem == "john"

user_input = input("Which fugitive? ")
try:
    fugitive = fugitives[user_input]
except KeyError:
    # what do you do when the user enters a bad name?
    # maybe...
    raise

以上是关于Python 3使用用户输入来访问另一个文件中的字典的主要内容,如果未能解决你的问题,请参考以下文章

无法使用从 python 中同一目录中的另一个文件访问的类

使用用户在另一个文件php中的输入

将一个字段复制到访问中的另一个字段

使用 react-router-dom 时如何从 css 文件访问公共文件夹中的图像?

如何通过IP地址来访问网站

Python的文件操作