如何在python中从字典中调用项?

如何在python中从字典中调用项?,python,dictionary,Python,Dictionary,所以我有一个字典,它由一个数字组成,它的定义是周期表上对应的元素 我已经建立了这样的字典: for line in open("periodic_table.txt"): temp.append(line.rstrip()) for t in temp: if t[1] != " ": elements[x] = t[3:] else: elements[x] = t[2:] x += 1 while count == 0:

所以我有一个字典,它由一个数字组成,它的定义是周期表上对应的元素

我已经建立了这样的字典:

for line in open("periodic_table.txt"):
    temp.append(line.rstrip())

for t in temp:
    if t[1] != " ":
        elements[x] = t[3:]
    else:
        elements[x] = t[2:]
    x += 1
while count == 0:
    check = 0
    line = input("Enter element number or element name: ")
    if line == "":
        count = count + 1
        break
    for key,value in elements.items():
        if line == value:
            print ("Element number for",line,"is",key)
            check = 1
            break
        if line.isdigit():
            if int(line) <= 118 and int(line) > 0:
                print ("Element number",line, "is",elements[int(line)])
                check = 1
                break
    if check == 0:
        print ("That's not an element!")
if answer.isdigit():
    print elements[int(answer)]
else:
    print elements.index(answer)
我知道每个元素都在表中,因为我要求程序打印字典。 这一点是,用户输入一个数字或元素名称,数字和名称都是这样打印的:

for line in open("periodic_table.txt"):
    temp.append(line.rstrip())

for t in temp:
    if t[1] != " ":
        elements[x] = t[3:]
    else:
        elements[x] = t[2:]
    x += 1
while count == 0:
    check = 0
    line = input("Enter element number or element name: ")
    if line == "":
        count = count + 1
        break
    for key,value in elements.items():
        if line == value:
            print ("Element number for",line,"is",key)
            check = 1
            break
        if line.isdigit():
            if int(line) <= 118 and int(line) > 0:
                print ("Element number",line, "is",elements[int(line)])
                check = 1
                break
    if check == 0:
        print ("That's not an element!")
if answer.isdigit():
    print elements[int(answer)]
else:
    print elements.index(answer)
当计数==0时:
检查=0
行=输入(“输入元素编号或元素名称:”)
如果行==“”:
计数=计数+1
打破
对于键,元素中的值。项()
如果行==值:
打印(“元素编号”,行,“is”,键)
检查=1
打破
如果行.isdigit():
如果int(行)为0:
打印(“元素编号”,行,“是”,元素[int(行)])
检查=1
打破
如果检查==0:
打印(“那不是元素!”)
这适用于字典中除最后一个元素ununonotium之外的所有元素。当用户输入118时,将打印此元素,但如果用户输入'ununonotium',则程序会显示“这不是元素!”。这是为什么?我该如何修复它


提前感谢

让python为您进行查找要容易得多。暂时忽略空行:

elements = []
for line in open("periodic_table.txt"):
    elements.append(line[3:])
然后可以执行如下查找:

for line in open("periodic_table.txt"):
    temp.append(line.rstrip())

for t in temp:
    if t[1] != " ":
        elements[x] = t[3:]
    else:
        elements[x] = t[2:]
    x += 1
while count == 0:
    check = 0
    line = input("Enter element number or element name: ")
    if line == "":
        count = count + 1
        break
    for key,value in elements.items():
        if line == value:
            print ("Element number for",line,"is",key)
            check = 1
            break
        if line.isdigit():
            if int(line) <= 118 and int(line) > 0:
                print ("Element number",line, "is",elements[int(line)])
                check = 1
                break
    if check == 0:
        print ("That's not an element!")
if answer.isdigit():
    print elements[int(answer)]
else:
    print elements.index(answer)

让python为您进行查找要容易得多。暂时忽略空行:

elements = []
for line in open("periodic_table.txt"):
    elements.append(line[3:])
然后可以执行如下查找:

for line in open("periodic_table.txt"):
    temp.append(line.rstrip())

for t in temp:
    if t[1] != " ":
        elements[x] = t[3:]
    else:
        elements[x] = t[2:]
    x += 1
while count == 0:
    check = 0
    line = input("Enter element number or element name: ")
    if line == "":
        count = count + 1
        break
    for key,value in elements.items():
        if line == value:
            print ("Element number for",line,"is",key)
            check = 1
            break
        if line.isdigit():
            if int(line) <= 118 and int(line) > 0:
                print ("Element number",line, "is",elements[int(line)])
                check = 1
                break
    if check == 0:
        print ("That's not an element!")
if answer.isdigit():
    print elements[int(answer)]
else:
    print elements.index(answer)

我怀疑这是一个案件敏感的问题。
改变

if line == value:

这将解决这个问题。
当您在那里时,为什么将
if
放在
for
循环中? 您可以先检查一下,然后不需要
中断

if line.isdigit():
    if int(line) <= 118 and int(line) > 0:
        print ("Element number",line, "is",elements[int(line)])
        check = 1 
        #<-------- break no longer required
else:
    #for loop as above
if line.isdigit():
如果int(行)为0:
打印(“元素编号”,行,“是”,元素[int(行)])
检查=1

# 我怀疑这是一个案件敏感的问题。
改变

if line == value:

这将解决这个问题。
当您在那里时,为什么将
if
放在
for
循环中? 您可以先检查一下,然后不需要
中断

if line.isdigit():
    if int(line) <= 118 and int(line) > 0:
        print ("Element number",line, "is",elements[int(line)])
        check = 1 
        #<-------- break no longer required
else:
    #for loop as above
if line.isdigit():
如果int(行)为0:
打印(“元素编号”,行,“是”,元素[int(行)])
检查=1

#如果他们进入联合国大学,会发生什么?资本化有问题吗?请尝试
line.lower()
,以确保用户输入都是小写。(和
value.lower()?请尝试
line.lower()
,以确保用户输入都是小写。(和
value.lower()!问题是,当程序正在构建字典时,它在元素的前面添加了3位数字的空白,并且由于用户在输入元素名时不进入空白,因此程序会认为这是不正确的,因此将此声明为“不是元素”。我做了一些更改,并且非常确定这不是一个区分大小写的问题。“一些更改”==这些更改?是的,您在上面建议的更改,但这不是问题所在,我已经解决了它!问题是,当程序正在构建字典时,它在元素的前面添加了3位数字的空白,并且由于用户在输入元素名时不进入空白,因此程序会认为这是不正确的,因此将此声明为“不是元素”。