python字典的新字符行

python字典的新字符行,python,dictionary,Python,Dictionary,编写一个名为“print_keys”的函数,该函数将键值存储作为参数,字符串作为键,整数作为值。该函数在单独的行上打印输入的每个键。也就是说,它打印由新行字符分隔的键值存储区的所有键 在这个问题上我已经被困了一段时间,似乎无法理解。我试着做一个for循环,并用它连接起来,但它并没有像我期望的那样工作。真的需要帮忙,谢谢 这就是我目前所拥有的 def print_keys(dict): for key, value in sorted(dict.items()): prin

编写一个名为“print_keys”的函数,该函数将键值存储作为参数,字符串作为键,整数作为值。该函数在单独的行上打印输入的每个键。也就是说,它打印由新行字符分隔的键值存储区的所有键

在这个问题上我已经被困了一段时间,似乎无法理解。我试着做一个for循环,并用它连接起来,但它并没有像我期望的那样工作。真的需要帮忙,谢谢

这就是我目前所拥有的

def print_keys(dict):
    for key, value in sorted(dict.items()):
        print('{} - {}, {} - {}'.format(key, value[0], key, value[1]))
这就是显示的错误 输入[{'spy':9,'Spirate':8,'strict':8}]时出错:'int'对象不可下标


请注意,问题已经生成了一个列表,我所要做的就是问题所要问的问题。

您的代码假设每个字典项包含至少两个项目的列表-这就是带有
值[0]
值[1]
的打印对我说的。然而,在示例输入中,每个字典项只有一个整数。这就是您收到“不可下标”错误的原因-整数
9
不可下标。如果
spy
的条目是
[9,3]
,则它可以正常工作

删除索引和打印的下一对就足以让它工作

my_dict = {'spy': 9, 'stimulate': 8, 'strict': 8}

def print_keys(dict_to_print):
    for key, value in sorted(dict_to_print.items()):
        print('{} - {}'.format(key, value))

print_keys(my_dict)
编辑:按值排序

my_dict = {'band': -1, 'yard': 16, 'universe': 8, 'dock': -3, 'missionary': 2 }

def print_keys(dict_to_print):
    for key in sorted(dict_to_print, key=dict_to_print.get):
        value = dict_to_print[key]
        print('{} - {}'.format(key, value))

print_keys(my_dict)

顺便说一句,字典中的每个值都是一个int,而不是一个包含多个项的列表。顺便说一句,给变量命名一个内置的python关键字是不好的,它会将关键字修改为该变量的值,那么真正的关键字函数是不可访问的。这个case关键字是
dict
@coderfanticbsal,将您的print语句替换为
print({}:{}.format(key,value))
检查该输出。应该能够改变一点,以获得您想要的输出。让我们知道您是否仍然被卡住。'dict'对象的描述符'items'需要一个参数(我尝试运行它时就是这么说的,如果我问了一些愚蠢的问题,很抱歉,我对python还是很陌生)@coderfanicbsal-
dict
在python中是一个保留字,不过如果您小心的话,可以使用它。我编辑了上面的代码以删除它的使用。上面的代码在更改之前工作,因此我假设您的代码没有定义关键字
dict
,因此python将返回保留字。啊,我明白了,所以当我尝试这是它给出的输出时,函数print_值在输入上不正确[{'band':-1,'yard':16,'universe':8,'dock':-3,'宣教士]:2}打印:“band--1 dock--3宣教士-2 universe-8码-16”预期:“-1 16 8-3 2”,因此我认为如果我取出其中一个括号,它将解决此问题。好的,您希望根据
值进行排序,而不是
-请参见-但只需在排序中使用
(dict\u to\u print,key=dict\u to\u print.get)
就可以解决大部分问题。printed:solid--3自己--3内阁-0硬-3博物馆-6“预期:“6-3 0-3”现在是询问值,所以我将其更新为您刚刚编辑的值,似乎它在只需要键值对的int时使用str和int。@kingsley