Python2.7 - 如何访问字典中第一次出现的值并进行更改?

时间:2017-03-16 18:04:41

标签: python-2.7 dictionary key-value

我刚开始学习使用在线资源和免费在线大学课程的Python(2.7)和计算机编程。 (我只有几个星期了)

我一直致力于一个项目,以应用我学到的每一件新事物。

我有一个我希望保持特定长度的列表(例如6):

list = ["item", "second_item", "third_item", "empty", "empty", "empty"]

然后我学会了如何使用词典,并希望将此列表更改为字典:

list = {1:"item", 2:"second_item", 3:"third_item", 4:"empty", 5:"empty", 6:"empty"}

我想通过引用第一次出现的“empty”来添加“list”,当它仍然是一个列表时,我使用了:

if "empty" in list:                                   
    addeditem=inventory.index("empty")
    list[addeditem]="newitem"
    print "Added newitem to list!"
else:
    print "list is full!"

如果我尝试用字典执行此操作,则不起作用。我相信这是因为当我使用if "empty" in list:时,它认为我正在尝试引用一个键,当我想将第一次出现的“empty”作为值引用然后将该值更改为“newitem”时。

我有一个类似的解决方法:

    if list[1]=="empty":                 
        list[1]="newitem"
        print "Added newitem to list!"
    elif list[2]=="empty":
        list[2]="newitem"
        print "Added newitem to list!"
    elif list[3]=="empty":
        list[3]="newitem"
        print "Added newitem to list!"
    elif list[4]=="empty":
        list[4]="newitem"
        print "Added newitem to list!"
    elif list[5]=="empty":
        list[5]="newitem"
        print "Added newitem to list!"
    elif list[6]=="empty":
        list[6]="newitem"
        print "Added newitem to list!"
    else:
        print "list is full!"

对于使用列表更容易做的事情,这种方法似乎很多工作。我想知道是否有更好的方法将字符串添加到字典中,而不是在特定键上,但是在第一次出现特定值时。我想保持钥匙一样。 我希望我在提出问题时已经足够具体了。

如果您需要我解释更多,请告诉我。我还在学习词典,但到目前为止我还没有找到更好的方法来做到这一点。再说一遍,我只是在学习任何类型编程的第一个月,所以我非常感谢能够耐心地回答这类问题!

1 个答案:

答案 0 :(得分:0)

这种方法的问题在于字典中没有顺序概念。字典是哈希值,插入不同键的顺序可能与最终对这些键进行哈希处理的顺序无关。出于您已经编写的代码的目的,您可以通过使用循环而不是布尔标记来优化它是否可以添加列表,我在下面作为示例编写。但是,如果您需要维护某种顺序,那么字典可能不是使用这两种方式的正确数据结构。

added = False
for i in range(1,7):
    if list[i] == "empty":
        list[i] = "newitem"
        print "Added newitem to list!"
        added = True
        break
if not added:
    print "list is full!"