首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python - list.append()返回空字符串

python - list.append()返回空字符串
EN

Stack Overflow用户
提问于 2020-11-18 02:10:11
回答 2查看 49关注 0票数 0

这是我的第一篇堆栈溢出帖子。如果有任何反馈,我将不胜感激。我正在尝试用champion_name_id中的值填充列表champion_frequency_list。我的嵌套循环似乎返回了一个空列表。有人能帮我理解这个问题吗?

代码语言:javascript
复制
champion_frequency = {235: 19, 202: 26, 145: 3, 523: 5, 360: 3, 67: 1, 236: 5, 498: 1, 21: 2, 96: 3, 22: 18, 110: 1, 51: 3, 429: 1, 81: 2, 104: 1, 2: 1, 115: 1, 14: 1, 61: 1, 875: 1, 31: 1}
champion_name_id = {'1': 'Annie',
                    '10': 'Kayle',
                    '101': 'Xerath',
                    '102': 'Shyvana',
                    '103': 'Ahri',
                    '104': 'Graves',
                    '105': 'Fizz',
                    '106': 'Volibear',
                    '107': 'Rengar',
                    '11': 'MasterYi',
                    '110': 'Varus',
                    '111': 'Nautilus',
                    '112': 'Viktor',
                    '113': 'Sejuani',
                    '114': 'Fiora',
                    '115': 'Ziggs',
                    '117': 'Lulu',
                    '119': 'Draven',
                    '12': 'Alistar',
                    '120': 'Hecarim',
                    '121': 'Khazix',
                    '122': 'Darius',
                    '126': 'Jayce',
                    '127': 'Lissandra',
                    '13': 'Ryze',
                    '131': 'Diana',
                    '133': 'Quinn',
                    '134': 'Syndra',
                    '136': 'AurelionSol',
                    '14': 'Sion',
                    '141': 'Kayn',
                    '142': 'Zoe',
                    '143': 'Zyra',
                    '145': 'Kaisa',
                    '147': 'Seraphine',
                    '15': 'Sivir',
                    '150': 'Gnar',
                    '154': 'Zac',
                    '157': 'Yasuo',
                    '16': 'Soraka',
                    '161': 'Velkoz',
                    '163': 'Taliyah',
                    '164': 'Camille',
                    '17': 'Teemo',
                    '18': 'Tristana',
                    '19': 'Warwick',
                    '2': 'Olaf',
                    '20': 'Nunu',
                    '201': 'Braum',
                    '202': 'Jhin',
                    '203': 'Kindred',
                    '21': 'MissFortune',
                    '22': 'Ashe',
                    '222': 'Jinx',
                    '223': 'TahmKench',
                    '23': 'Tryndamere',
                    '235': 'Senna',
                    '236': 'Lucian',
                    '238': 'Zed',
                    '24': 'Jax',
                    '240': 'Kled',
                    '245': 'Ekko',
                    '246': 'Qiyana',
                    '25': 'Morgana',
                    '254': 'Vi',
                    '26': 'Zilean',
                    '266': 'Aatrox',
                    '267': 'Nami',
                    '268': 'Azir',
                    '27': 'Singed',
                    '28': 'Evelynn',
                    '29': 'Twitch',
                    '3': 'Galio',
                    '30': 'Karthus',
                    '31': 'Chogath',
                    '32': 'Amumu',
                    '33': 'Rammus',
                    '34': 'Anivia',
                    '35': 'Shaco',
                    '350': 'Yuumi',
                    '36': 'DrMundo',
                    '360': 'Samira',
                    '37': 'Sona',
                    '38': 'Kassadin',
                    '39': 'Irelia',
                    '4': 'TwistedFate',
                    '40': 'Janna',
                    '41': 'Gangplank',
                    '412': 'Thresh',
                    '42': 'Corki',
                    '420': 'Illaoi',
                    '421': 'RekSai',
                    '427': 'Ivern',
                    '429': 'Kalista',
                    '43': 'Karma',
                    '432': 'Bard',
                    '44': 'Taric',
                    '45': 'Veigar',
                    '48': 'Trundle',
                    '497': 'Rakan',
                    '498': 'Xayah',
                    '5': 'XinZhao',
                    '50': 'Swain',
                    '51': 'Caitlyn',
                    '516': 'Ornn',
                    '517': 'Sylas',
                    '518': 'Neeko',
                    '523': 'Aphelios',
                    '53': 'Blitzcrank',
                    '54': 'Malphite',
                    '55': 'Katarina',
                    '555': 'Pyke',
                    '56': 'Nocturne',
                    '57': 'Maokai',
                    '58': 'Renekton',
                    '59': 'JarvanIV',
                    '6': 'Urgot',
                    '60': 'Elise',
                    '61': 'Orianna',
                    '62': 'MonkeyKing',
                    '63': 'Brand',
                    '64': 'LeeSin',
                    '67': 'Vayne',
                    '68': 'Rumble',
                    '69': 'Cassiopeia',
                    '7': 'Leblanc',
                    '72': 'Skarner',
                    '74': 'Heimerdinger',
                    '75': 'Nasus',
                    '76': 'Nidalee',
                    '77': 'Udyr',
                    '777': 'Yone',
                    '78': 'Poppy',
                    '79': 'Gragas',
                    '8': 'Vladimir',
                    '80': 'Pantheon',
                    '81': 'Ezreal',
                    '82': 'Mordekaiser',
                    '83': 'Yorick',
                    '84': 'Akali',
                    '85': 'Kennen',
                    '86': 'Garen',
                    '875': 'Sett',
                    '876': 'Lillia',
                    '89': 'Leona',
                    '9': 'Fiddlesticks',
                    '90': 'Malzahar',
                    '91': 'Talon',
                    '92': 'Riven',
                    '96': 'KogMaw',
                    '98': 'Shen',
                    '99': 'Lux'}

champion_frequency_list = []
for key in champion_name_id:
    #print('key', key, 'key-type', type(key))
    for index in range(len(list(champion_frequency.keys()))):
        #print('index',index)
        #print('current champion frequency index', str(list(champion_frequency.keys())[index]), 'type', type(str(list(champion_frequency.keys())[index])))
        #print('is this iteration true?: ', key == str(list(champion_frequency.keys())[index]))
        #print('if true, append to list', champion_name_id[str(key)], 'type', type(champion_name_id[str(key)]))
        champion_name = champion_name_id[str(key)]
        if key == list(champion_frequency.keys())[index]:
            champion_frequency_list.append(champion_name)

print('champion frequency list length', len(champion_frequency_list))
print('champion frequency list', champion_frequency_list)
EN

回答 2

Stack Overflow用户

发布于 2020-11-18 02:19:57

我不确定这是否是你要找的,但我认为你需要更换

代码语言:javascript
复制
if key == list(champion_frequency.keys())[index]:
            champion_frequency_list.append(champion_name)

使用

代码语言:javascript
复制
if int(key) == list(champion_frequency.keys())[index]:
            champion_frequency_list.append(champion_name)
票数 0
EN

Stack Overflow用户

发布于 2020-11-18 02:37:04

简而言之,您的键的类型不匹配,因此作为user14654909 notes,您需要将key转换为int,以匹配您从champion_frequency获得的键的类型,从而进行测试:

代码语言:javascript
复制
if int(key) == list(champion_frequency.keys())[index]:

而不是:

代码语言:javascript
复制
if key == list(champion_frequency.keys())[index]:

长长的答案是:这段代码极其复杂和低效;它根本不能从您使用dict中获益。多亏了一个双重嵌套的循环和champion_frequency.keys()的内部重复列表,您正在为一些应该只需要工作的东西做O(n × m²)工作(nchampion_name_id的长度,mchampion_frequency的长度)。除了print之外,整个嵌套循环可以简化为:

代码语言:javascript
复制
champion_frequency_list = [name for champion_id_str, name in champion_name_id.items()
                           if int(champion_id_str) in champion_frequency]

它将为您节省数百个临时list,并从根本上消除与champion_frequency大小相关的所有复杂性(因为简单的成员资格测试在dict中大约是O(1) )。一个简单的例子:

代码语言:javascript
复制
champion_frequency = {... definition omitted for brevity ...}
champion_name_id = {... definition omitted for brevity ...}

champion_frequency_list = []
for key in champion_name_id:
    for index in range(len(list(champion_frequency.keys()))):
        champion_name = champion_name_id[str(key)]
        if int(key) == list(champion_frequency.keys())[index]:
            champion_frequency_list.append(champion_name)

print('champion frequency list length', len(champion_frequency_list))
print('champion frequency list', champion_frequency_list)

champion_frequency_list_simple = [name for champion_id_str, name in champion_name_id.items()
                                  if int(champion_id_str) in champion_frequency]
print('Simple champion frequency list', champion_frequency_list_simple)
print('Is simple solution result identical?', champion_frequency_list == champion_frequency_list_simple)

Try it online!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64880898

复制
相关文章

相似问题

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