File1.py
john = {'fullname':'John Wick', 'Age': 35 , 'job':'Hitman'}
mark = {'fullname':'Mark Zuckerberg', 'Age': 30, 'job': 'Developer'}
Will = {'fullname':'Will smith', 'Age': 45, 'job': 'Actor'}
so on... and many more names
所以我的问题是我如何获取这些价值观,让我说我想通过给出这个人的名字来了解一个人的年龄?
File2.py
from File1.py import *
#what should the code be to access the age
#lets say I write 'john', I want to get his age
print john['Age'] # this is not how i want to access it
#
#any other way or methods ??
#
user_input=raw_input("enter a Name: ")
# user_input contains the name of the person I want to get the Age of
答案 0 :(得分:1)
您可以使用嵌套字典将此人的姓名传递给字典,然后通过密钥访问年龄"年龄":
fetchallarrow
输出:
john = {'fullname':'John Wick', 'Age': 35 , 'job':'Hitman'}
mark = {'fullname':'Mark Zuckerberg', 'Age': 30, 'job': 'Developer'}
Will = {'fullname':'Will smith', 'Age': 45, 'job': 'Actor'}
new_data = {"John":john, "Mark":mark, "Will":Will}
print(new_data["John"]["Age"])
编辑:没有嵌套字典,您可以尝试:
35
输出:
john = {'fullname':'John Wick', 'Age': 35 , 'job':'Hitman'}
mark = {'fullname':'Mark Zuckerberg', 'Age': 30, 'job': 'Developer'}
Will = {'fullname':'Will smith', 'Age': 45, 'job': 'Actor'}
user_input=raw_input("enter a Name: ")
final_age = [b["Age"] for a, b in globals().items() if a == user_input][0]
答案 1 :(得分:1)
首先,在我看来,你不应该这样做。 @ Ajax1234提供了一个更好的解决方案,但问你的问题:
import File1
name = input('>>> Name: ')
print(getattr(File1, name)['Age']) # 35
是吗
答案 2 :(得分:0)
您可以在词典中使用get函数
print(john.get('age' , 0))
首先获取两个参数的密钥,然后在未找到密钥时加载默认值
答案 3 :(得分:0)
在嵌套字典旁边,您还可以使用导入别名来使代码更清晰。
var doc = new jspdf('p','pt','a4');
doc.autoTable(columns, rows, {
headerStyles: {
lineWidth: 0.06,
lineColor: [217, 216, 216]
},
beforePageContent: header,
margin: {top: 40},
theme: 'plain',
styles: {
overflow: 'linebreak',
lineWidth: 0.02,
lineColor: [217, 216, 216]
}
});
var header = function (data) {
doc.setFontSize(25);
doc.setTextColor(0);
doc.text(this.companyname,15,15);
doc.setFontStyle('normal');
};
doc.autoTableHtmlToJson(columns, rows);
doc.save("file.pdf");
答案 4 :(得分:0)
您可以使用内置的globals
功能。从文档(强调我的):
返回表示当前全局符号表的字典。这始终是当前模块的字典(在函数或方法内部,这是定义它的模块,不是调用它的模块)。
修改强>
当您使用单独的文件时,您可以在文件File1.py中创建一个函数,该函数接受字典名称并使用globals()
函数返回适当的值。
用法:
File1.py
john = {'fullname':'John Wick', 'Age': 35 , 'job':'Hitman'}
mark = {'fullname':'Mark Zuckerberg', 'Age': 30, 'job': 'Developer'}
Will = {'fullname':'Will smith', 'Age': 45, 'job': 'Actor'}
def get_age(person):
return globals()[person]['Age']
File2.py
import File1
person = input('Enter name:')
print(File1.get_age(person))
答案 5 :(得分:0)
我不完全理解为什么要将这些dicts中的每一个保存到一个单独的变量中,而不是仅使用嵌套的dict,如
persons = {
'john': {'fullname': 'John Wick', 'Age': 35, 'job': 'Hitman'},
'mark': {'fullname': 'Mark Zuckerberg', 'Age': 30, 'job': 'Developer'},
'will': {'fullname': 'Will Smith', 'Age': 45, 'job': 'Actor'}
}
您可以使用用户输入来访问persons
dict的密钥,
如果你真的想根据他们的值命名你的变量(这对我来说没有多大意义,因为它之后并没有真正的变量),你可以使用Python的{{1 }和globals()
函数。
file1.py
locals()
file2.py
john = {'fullname': 'John Wick', 'Age': 35, 'job': 'Hitman'}
mark = {'fullname': 'Mark Zuckerberg', 'Age': 30, 'job': 'Developer'},
will = {'fullname': 'Will Smith', 'Age': 45, 'job': 'Actor'}
但是,由于你可以使用嵌套的dict,我认为没有任何一个合理的理由可以使用from file1 import *
name = raw_input('Please enter a name:')
global_vars = globals()
print(global_vars[name])
来完成这个用例。只需在另一个字典中的键下声明你的字谜,你应该没问题。