我正在努力弄清楚我的代码有什么问题。我试图从几个词典中随机选择一个键,然后将该键添加到列表的开头。例如:
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',列表]
有什么想法吗?是否有更好的方法来搜索多个字典的随机密钥,以产生所需的结果?
感谢。
答案 0 :(得分:2)
我认为item
变量与list1
相同。如果是,请尝试:
list1[:0] = [key]
或者,您也可以使用list.insert
函数代替切片赋值:
list1.insert(0, key)
您的版本的工作方式如下:
list1 = ['list']
,key = 'key5'
'list'
list1
之前的元素
key
的值,即"key5"
。"key5"
是一系列k
,e
,y
和5
。list1[:0] = key
我们连接"key5"
序列和list1
。list1[:0] = [key]
中,我们连接[key]
序列(只有一个元素等于“key5”)和list1
。这就是我们真正想要的。答案 1 :(得分:2)
这样的事情:
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']
答案 2 :(得分:1)
在Python中string
对象是可迭代的,所以,这一行
list1[:0] = key
和这个
list1[:0] = list(key)
是等于,意味着使用list1
中的元素替换key
中从第0位到第0位的所有元素。您应该使用insert
函数,或者使用key
元素创建一个列表并分配它。