我刚开始学习使用在线资源和免费在线大学课程的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!"
对于使用列表更容易做的事情,这种方法似乎很多工作。我想知道是否有更好的方法将字符串添加到字典中,而不是在特定键上,但是在第一次出现特定值时。我想保持钥匙一样。 我希望我在提出问题时已经足够具体了。
如果您需要我解释更多,请告诉我。我还在学习词典,但到目前为止我还没有找到更好的方法来做到这一点。再说一遍,我只是在学习任何类型编程的第一个月,所以我非常感谢能够耐心地回答这类问题!
答案 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!"