字典和随机生成的字符串在我的代码中出现问题

2024-10-03 15:35:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道我的代码有什么问题:

import random

dicoRdm = {}

i = 0
z = 0
for i in range(0, 7) :
    rdmLetters = str(random.sample("bmkSL35", 7))
    for z in range(0, 7) :
        rdmLetters = "".join(rdmLetters)
        z += 1
    dicoRdm[i] = rdmLetters
    i += 1

我想做的是一个字典,它以1到6的顺序生成6个随机字符串。我想知道为什么我的代码没有像我期望的那样工作。生成工作正常,但似乎该词典只包含一个字母接一个字母,而不是随机生成的实际单词。键(0、1、2、3等)关联起作用,但问题只存在于与相应键的字符串关联中。它们都是分开的,正如你在照片中看到的:

Print result

我希望得到类似的东西

{0: 'bhdlsSLm', 1: 'bdHsSmL', ...}

Tags: sample字符串代码inimportfor字典字母
3条回答

Jornsharpe在对OPs答案的评论中所说的关于应用于random.sample(..))str()函数的内容实际上是导致意外行为的主要问题

如果你有一个list a并且你想把它变成一个string b,你可以通过b = "".join(a)来实现

因此,如果要删除str()函数,那么rdmLetters将是一个列表,因此rdmLetters = "".join(rdmLetters)将正常工作

我建议读This link of str() function on stackoverflow

好吧,我刚发现我的代码有什么问题。我刚刚删除了rdmLetters = str(random.sample("bmkSL35", 7))中的str()并且成功了,现在我得到了我所期望的https://i.imgur.com/VnwvaAR.png

我希望我帮助了和我有同样问题的人(或者犯了和我一样的错误)

如果有人能解释为什么这件小事打破了我的期望。我想这是因为我告诉代码这是一个字符串两次,它可能会一个接一个地分隔每个字母,但我实际上不知道确切的答案

试试这个

import random
dicoRdm ={i: ''.join(random.sample('bmkSLA35', 7)) for i in range(6)}
print(dicoRdm)

相关问题 更多 >