替换python中的键值

时间:2014-04-21 21:42:28

标签: python

我有一个看起来像这样的字典

        my_dictionary={
                ("today is", "tomorrow"): 1.34,
                ("tomorrow", "today is"):2.6}
                 etc

我试图这样做,以便如果用户想要更改任何这些值的值,他们就可以。

早些时候在该计划中:

  value= my_dictionary[item_1, item_2}

我尝试使用此

def new():
   global choice
   global change
   choice=input("Would you like to change a value?")
   if choice=="yes":
      change=input("Which terms?")
      if change in my_dictionary:
         value=float(input("Enter value: "))
         my_dictionary[change]=value
      else:
         print("Term doesn't exist.")

但这不起作用。我直接指出术语不存在' 我从未编写任何替换,追加,删除字典中任何内容的内容。 如果有人有任何想法我会非常感激。 谢谢。

所以它是: 你想改变价值吗?是 今天是哪个条款?明天 术语不存在。

无论使用和不使用逗号都会发生这种情况 即使我只输入一个项目仍然没有工作 - 它只是转移到程序的下一部分。 我需要专门更改两个术语的值,因此必须按正确的顺序输入它们。

4 个答案:

答案 0 :(得分:1)

字典基本上总是以这种方式构建:

my_dict = {
           key: value,
           key: value,
           key: value... #etc, etc
          }

...其中每个'key'是不同的变量。 “价值”不一定是不同的,尽管它们通常都是不同的。

只需输入以下内容即可添加或修改字典键值对:

my_dict[key] = value

...其中'key'是'first'变量,'value'是第二个。

但是,如果您要使用元组作为密钥,则搜索密钥需要完全匹配。如果您有一个具有以下结构的字典:

my_dict = {
           ('one', 'key'):value,
           ('two', 'key'):other_value,
            ....etc.....
          }

...并且您尝试说if 'one' in my_dict,它将返回False,因为您没有使用被用作密钥的确切项目。您可以使用if ('one', 'key') in my_dict之类的语法来匹配完全键。

答案 1 :(得分:0)

您从change获得的input是一个字符串,而您字典的键是元组。

您可以使用ast.literal_eval()将字符串转换为元组;

Python 2.7.6 (default, Mar 31 2014, 00:17:41) 
Type "help", "copyright", "credits" or "license" for more information.
>>> import ast
>>> ast.literal_eval("('a', 'b')")
('a', 'b')

或者您可以拆分字符串:

>>> tuple('a, b'.split(','))
('a', ' b')

答案 2 :(得分:0)

如果您希望用户输入“今天是,明天”,如您在评论中所述,则您的代码无法处理它。

字典中的键是元组,其中用户输入始终是字符串。您必须将用户输入转换为元组。

你这样做:

change=input("Which terms?")
change_list = change.split(',')
change_list = [a.strip() for a in change_list]
change_tuple = tuple(change_list)

现在检查字典中是否有change_tuple

if change_tuple in my_dictionary:

其余代码似乎没问题。

答案 3 :(得分:0)

这本字典中的密钥是一个元组。因此,如果要更改字典中的值,则需要输入元组。

choice=raw_input("Would you like to change a value?")
if choice=="yes":
    change=input("Which terms?")

    if change in my_dictionary:
        value=float(input("Enter value: "))
        my_dictionary[change]=value
    else:
        print("Term doesn't exist.")

运行此代码并输入正确的键值的结果:

Would you like to change a value?yes
Which terms?("today is", "tomorrow")
Enter value: 1.35