在python 3.3中将字典中的随机键添加到列表中

在python 3.3中将字典中的随机键添加到列表中,python,python-3.3,Python,Python 3.3,我正在努力找出我的代码出了什么问题。我试图从几个字典中随机选择一个键,然后将该键添加到列表的开头。例如: import random list1 = ["list"] dict1 = {"key1" : "def1", "key2" : "def2", "key3" : "def3"} dict2 = {"key4" : "def4", "key5" : "def5", "key6" : "def6"} DICTIONARIES = [dict1, dict2] value = random.c

我正在努力找出我的代码出了什么问题。我试图从几个字典中随机选择一个键,然后将该键添加到列表的开头。例如:

import random
list1 = ["list"]
dict1 = {"key1" : "def1", "key2" : "def2", "key3" : "def3"}
dict2 = {"key4" : "def4", "key5" : "def5", "key6" : "def6"}
DICTIONARIES = [dict1, dict2]
value = random.choice(DICTIONARIES)
key = random.choice(list(value.keys()))
list1[:0] = key
print (list1)
我想要的是[key5,list]的打印结果。我得到的是['k','e','y','5',列表]

有什么想法吗?有没有更好的方法可以在多个字典中搜索一个随机键来生成所需的结果


谢谢。

我想
变量与
列表1
相同。如果是,请尝试以下操作:

list1[:0] = [key]
或者,您也可以使用
list.insert
函数代替切片分配:

list1.insert(0, key)
您的版本的工作方式如下所示:

  • 分配前:
    list1=['list']
    key='key5'
  • 赋值的左侧指的是
    list1
  • 右侧指的是
    键的值
    ,即
    “键5”
  • “key5”
    是由
    k
    e
    y
    5
    组成的序列
  • 因此,通过
    list1[:0]=key
    我们将
    “key5”
    序列和
    list1
    连接起来
  • 但是在
    list1[:0]=[key]
    中,我们连接了
    [key]
    序列(只有一个元素等于“key5”)和
    list1
    。这就是我们真正想要的

我假设
变量与
列表1
相同。如果是,请尝试以下操作:

list1[:0] = [key]
或者,您也可以使用
list.insert
函数代替切片分配:

list1.insert(0, key)
您的版本的工作方式如下所示:

  • 分配前:
    list1=['list']
    key='key5'
  • 赋值的左侧指的是
    list1
  • 右侧指的是
    键的值
    ,即
    “键5”
  • “key5”
    是由
    k
    e
    y
    5
    组成的序列
  • 因此,通过
    list1[:0]=key
    我们将
    “key5”
    序列和
    list1
    连接起来
  • 但是在
    list1[:0]=[key]
    中,我们连接了
    [key]
    序列(只有一个元素等于“key5”)和
    list1
    。这就是我们真正想要的
    • 类似这样的东西:

      import random
      list1 = ["list"]
      dict1 = {"key1" : "def1", "key2" : "def2", "key3" : "def3"}
      dict2 = {"key4" : "def4", "key5" : "def5", "key6" : "def6"}
      
      all_keys = list(dict1.keys() | dict2.keys())  #creates a list containing all keys
      key = random.choice(all_keys)
      list1.insert(0,key) 
      print (list1)          #prints  ['key1', 'list']
      
      大概是这样的:

      import random
      list1 = ["list"]
      dict1 = {"key1" : "def1", "key2" : "def2", "key3" : "def3"}
      dict2 = {"key4" : "def4", "key5" : "def5", "key6" : "def6"}
      
      all_keys = list(dict1.keys() | dict2.keys())  #creates a list containing all keys
      key = random.choice(all_keys)
      list1.insert(0,key) 
      print (list1)          #prints  ['key1', 'list']
      

      在Python
      string
      中,对象是可编辑的,因此,这一行

      list1[:0] = key
      
      还有这个

      list1[:0] = list(key)
      

      等于,表示将
      列表1
      中从第0位到第0位的所有元素替换为
      键中的元素。您应该使用
      insert
      函数,或者使用
      key
      元素创建一个列表并分配它。

      在Python中
      字符串
      对象是可编辑的,因此,此行

      list1[:0] = key
      
      还有这个

      list1[:0] = list(key)
      

      等于,表示将
      列表1
      中从第0位到第0位的所有元素替换为
      键中的元素。您应该使用
      insert
      函数,或者使用
      key
      元素制作一个列表并分配它。

      在Python 3中应该使用
      print()
      语法。非常感谢,我以后会使用这个方法。在Python 3中应该使用
      print()
      语法。非常感谢,我以后会使用这个方法。是的,项目应该是列表1。对不起,工作太多了,搞混了:-)你的解释很有帮助,谢谢!是的,项目应该是列表1。对不起,工作太多了,搞混了:-)你的解释很有帮助,谢谢!