首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在列表中生成字典

在列表中生成字典
EN

Stack Overflow用户
提问于 2015-11-06 22:19:45
回答 3查看 43关注 0票数 0

这就是我的问题,我有一个由程序随机生成的字符列表。我希望每个角色都能对彼此有感觉。

到目前为止,我的代码如下:

代码语言:javascript
复制
import random

# create characters

class CHARACTER:
    def __init__(self, name, surname, age, sexe, pragmatism,
        courage, intelligence, shyness, happiness, fear, hunger,
        comfort, feeling):
        self.name = name
        self.surname = surname
        self.age = age
        self.sexe = sexe
        self.pragmatism = pragmatism
        self.courage = courage
        self.intelligence = intelligence
        self.shyness = shyness
        self.happiness = happiness
        self.fear = fear
        self.hunger = hunger
        self.comfort = comfort
        self.feeling = feeling


characters = [] # list that will contain all the characters
feelingslist = []
sexe = ["Male", "Female"]

mname = ["John", "Mike", "Albert", "Henry", "Patrick", "Francis",
"Robert", "Simon", "Charles", "Charlie", "Connor", "Adam", "Blake", 
"Steven", "Edward", "Andrew", "Joe", "Gregory", "Brian", "Anthony", 
"Frank", "Billy", "Boris", "Edgar", "Elliott", "Erik", "Liam", "Kyron", 
"Ned", "Neil", "Ricky", "Ross", "Rich", "Roy", "Preston", "William", 
"Vladimir", "Zach", "Wyatt", "Tylor", "Thomas", "Spike"]

fname = ["Alessia", "Ally", "Bridgette", "Callie", "Jessica", 
"Debora", "Diana", "Elizabeth", "Clair", "Fran", "Hannah", 
"Helene", "Marie", "Laura", "Leslie", "Leyla", "Kiley", 
"Margaret", "Lola", "Maryjane", "Megan", "Rose", "Sofia", 
"Samantha", "Teresa", "Yolanda", "Teri", "Vicky", "Tricia", 
"Rose", "Rita", "Nita", "Paola", "Penelope", "Polly", 
"Nathalie", "Melody", "Morgane"]

lname = ["Smith", "Johnson", "Williams", "Jones", "Brown", "Miller", 
"Moore", "Taylor", "Thomas", "White", "Harris", "Thompson", "Garcia", 
"Allen", "Lewis", "Hall", "Young", "Clark", "Hill", "Lopez", "Carter", 
"Turner", "Collins", "Evans", "Campbell", "Nelson", "Parker", "Green", 
"Black", "Green", "Lee", "Martin"]


# the code below create 10 male and 10 female characters
# and puts them in the characters list.


for i in range(20):
    character = CHARACTER(random.choice(mname),
    random.choice(lname), random.randint(1,10), 
    random.choice(sexe), random.randint(1,10), random.randint(1,10),
    random.randint(1,10), random.randint(1,10),
    random.randint(1,10), random.randint(1,10),
    random.randint(1,10), random.randint(1,10), {})

    characters.append(character)
    i += 1

# assigning sexe to characters

for character in characters:
    if character.sexe == "Female":
        character.name = random.choice(fname)

# feelings

for character in characters:
    for character in characters:
        character.feeling[id(character)] = 5

# for each character in characters:
# add one feeling for each character

# printing characters

for character in characters:
    print character.name
    print character.surname
    print character.sexe
    print id(character)
    print character.feeling
    print " "

现在我的问题是,程序只为每个字符添加一个条目,如下所示:

摩根·加西亚女性44880880 {44880880: 5}

因此,每个角色在他们的“情感字典”中都有自己的词条,但没有其他字符。我希望每个字典对程序中的每个字符都有一个词条(这样每个字符对所有其他字符都有一个意见)

EN

回答 3

Stack Overflow用户

发布于 2015-11-06 22:26:06

在设置感觉的循环中,您使用相同的变量(character)来控制两个循环;它们需要是不同的变量。

例如:

代码语言:javascript
复制
for char1 in characters:
    for char2 in characters:
        char1.feeling[id(char2)] = 5
票数 1
EN

Stack Overflow用户

发布于 2015-11-07 00:18:08

好吧,我最终解决了这个问题,以防有同样问题的人读到这个主题,这里是我的解决方案:

代码语言:javascript
复制
characters_len = len(characters)

for character in characters:
    for i in range(characters_len):
        character.feeling[id(characters[i])] = 5

感谢你的回答,让我走上了正确的道路

票数 0
EN

Stack Overflow用户

发布于 2015-11-06 22:34:11

所以我应该这样做:

代码语言:javascript
复制
characters_len = len(characters)

for character in characters:
    for i in range(characters_len):
        character.feeling[id(character)] = 5
        i+=1
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33568875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档