Python2.7 - 如何访问字典中第一次出现的值并更改它?
Python2.7 - How to access the first occurence of a value in a dictionary and change it?
我刚刚开始使用在线资源和免费在线大学课程学习 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!"
对于使用列表更容易完成的事情,此方法似乎需要大量工作。我想知道是否有更好的方法可以将内容添加到字典中,而不是在特定键处,而是在第一次出现特定值时。我想保持钥匙不变。
我希望我问的问题足够具体。
如果您需要我解释更多,请告诉我。我还在研究字典,但到目前为止我还没有找到更好的方法来做到这一点。同样,我才刚刚开始学习任何类型的编程,所以我非常感谢您耐心回答此类问题!
这种方法的问题是字典中没有顺序的概念。字典是散列,您插入不同键的顺序可能与这些键最终散列的顺序无关。出于您已经编写的代码的目的,您可以通过使用循环而不是布尔值标记是否可以添加列表来优化它,我在下面作为示例编写了它。但是,如果您需要维护某种顺序,那么字典可能不是使用任何一种方式的正确数据结构。
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!"
我刚刚开始使用在线资源和免费在线大学课程学习 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!"
对于使用列表更容易完成的事情,此方法似乎需要大量工作。我想知道是否有更好的方法可以将内容添加到字典中,而不是在特定键处,而是在第一次出现特定值时。我想保持钥匙不变。 我希望我问的问题足够具体。
如果您需要我解释更多,请告诉我。我还在研究字典,但到目前为止我还没有找到更好的方法来做到这一点。同样,我才刚刚开始学习任何类型的编程,所以我非常感谢您耐心回答此类问题!
这种方法的问题是字典中没有顺序的概念。字典是散列,您插入不同键的顺序可能与这些键最终散列的顺序无关。出于您已经编写的代码的目的,您可以通过使用循环而不是布尔值标记是否可以添加列表来优化它,我在下面作为示例编写了它。但是,如果您需要维护某种顺序,那么字典可能不是使用任何一种方式的正确数据结构。
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!"