python中的无序字典值

2024-09-30 12:13:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典,我想洗牌的价值观,而不是键。例如:

{"a": "ACAT", "b": "ACTG", "c": "ACCC"}

洗牌之后:

{"a": "ACAT", "b": "ACTG", "c": "ACCC"}

但我不知道如何在python中完成这项工作。如果你能帮助我,我将不胜感激


Tags: 字典价值观actgacccacat
3条回答

您可以使用random.sample获得dict值的随机顺序列表,然后按照默认顺序将它们与键映射。使用shuffle的不同之处在于,您可以一次性完成此操作

from random import sample

result = dict(zip(values, sample(list(values.values()), len(values))))

运行10次

{'a': 'ACAT', 'b': 'ACCC', 'c': 'ACTG'}
{'a': 'ACTG', 'b': 'ACCC', 'c': 'ACAT'}
{'a': 'ACCC', 'b': 'ACTG', 'c': 'ACAT'}
{'a': 'ACTG', 'b': 'ACAT', 'c': 'ACCC'}
{'a': 'ACAT', 'b': 'ACCC', 'c': 'ACTG'}
{'a': 'ACCC', 'b': 'ACTG', 'c': 'ACAT'}
{'a': 'ACCC', 'b': 'ACTG', 'c': 'ACAT'}

您可以使用for循环和^{}来洗牌dict的值,同时更改原始dict

代码:

import random

d = {"a": "ACAT", "b": "ACTG", "c": "ACCC"}

vals = list(d.values())
random.shuffle(vals)

for i, key in enumerate(d): d[key] = vals[i]

说明:

  • import random,导入^{}模块
  • d = {"a": "ACAT", "b": "ACTG", "c": "ACCC"},将d设置为dict
  • vals = list(d.values()),将val设置为d的所有值的列表
  • random.shuffle(vals),洗牌{}
  • for i, key in enumerate(d): d[key] = vals[i],将d更改为随机值

random模块有一个在适当的位置进行洗牌的函数

所以我们可以得到dict的值,对它们进行洗牌,然后构造一个新的dict

演示:

>>> import random
>>> d = {
...     "a": "ACAT",
...     "b": "ACTG",
...     "c": "ACCC"
... }
>>> shuffled = list(d.values())
>>> random.shuffle(shuffled)
>>> dict(zip(d, shuffled))
{'a': 'ACCC', 'b': 'ACTG', 'c': 'ACAT'}

相关问题 更多 >

    热门问题