【发布时间】:2021-07-25 05:25:33
【问题描述】:
我正在制作一个可以在大字典中阅读的程序。它的部分功能是从字典中选择一些随机项,这是代码示例:
import random
d = {'VENEZUELA': 'CARACAS', 'CANADA': 'OTTAWA', 'UK': 'LONDON', 'FRANCE': 'PARIS', 'ITALY': 'ROME'}
random_cnty = random.choice(list(d.items())
print(random_cnty)
我要做的是创建一个字典理解,它选择一个随机字典条目并在定义的范围内重复该过程,因此我最终得到一个唯一字典 key.value 对的列表(没有重复)。
我尝试了以下方法,但出现语法错误:
random_countries = random.choice(list(d.items()) for i in range(3))
一个范围和一个随机函数可以同时添加到字典推导中吗?
我得到的回溯是:
Traceback(最近一次调用最后一次): 文件“/Users/home/Dropbox/Python_general_work/finished_projects/python/Scratch.py”,第 38 行,在 random_countries = random.choice(list(d.items()) in range(3)) 文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/random.py”,第 347 行,可选择 返回 seq[self._randbelow(len(seq))] TypeError: 'bool' 类型的对象没有 len()
非常感谢
【问题讨论】:
-
什么错误?你期待什么结果?使用特定的 rng 种子手动运行这些步骤,以确保我们都在同一页面上。
-
我最后有一个额外的括号吗?就像您知道的那样,您看起来像是在制作生成器,而不是字典理解。
-
@quamrana 没有多余的吗?最后一个括号是
choice() -
你想在最终的随机选择中重复吗?
-
@12944qwerty。我理解这个问题,但 OP 有责任让它回答。
标签: python dictionary-comprehension