制作一个包含(i,i * i)的字典,其中i为1到n

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了制作一个包含(i,i * i)的字典,其中i为1到n相关的知识,希望对你有一定的参考价值。

输入格式:

在一行中取数字n。

输出格式:

在一行中打印字典d。

期望的行为,对于输入8,字典:

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}

我尝试了什么:

n=int(input())
for i in range(1,n+1):
    a=i*i
    print("{",i,": ",a,"}",sep="")

对于输入6,它给了我什么:

{1: 1}
{2: 4}
{3: 9}
{4: 16}
{5: 25}
{6: 36}
答案

您可以在一个语句中创建dict:

d = dict((i,i*i) for i in range(1,n+1))

你得到n = 8

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}
另一答案

您可以使用dictionary comprehension创建字典:

n = int(input())
d = {i: i * i for i in range(1, n + 1)}
print(d)

10你得到

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}
另一答案

如果你想打印字典,为什么不做一个并保持简单而不是让它变得复杂。

n=int(input())
d = {}
for i in range(1,n+1):
    a=i*i
    d[i] = a
print(d)

你会得到预期的O / P:

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}
另一答案

One-line solution

print(''.join(['{', ', '.join([': '.join((str(i), str(i * i),)) for i in range(1, n + 1)]), '}']))

Explanation

join模块中有一个名为str的内置函数。有了它,您可以使用指定的分隔符连接字符串列表。

以下示例

','.join(['Hello', 'World'])

将返回concat字符串

'Hello, world'

你可以看到join非常好地处理利润。

但请注意,join采用单个参数,字符串列表。你不能提供整数列表;否则join将提出错误说:

TypeError: sequence item 0: expected str instance, int found

因此,您应该强制将range生成的整数转换为带有str的字符串。

Reference

以上是关于制作一个包含(i,i * i)的字典,其中i为1到n的主要内容,如果未能解决你的问题,请参考以下文章

tyvj1860后缀数组

递推计算贡献(gym/102028/problem/I)

最小表示法

565. 数组嵌套

2022-03-06:金币路径。 给定一个数组 A(下标从 1 开始)包含 N 个整数:A1,A2,……,AN 和一个整数 B。 你可以从数组 A 中的任何一个位置(下标为 i)跳到下标 i+1,i+

bzoj 4771: 七彩树