【问题标题】:Generate a list of strings from another list using python random and eliminate duplicates使用 python random 从另一个列表生成一个字符串列表并消除重复项
【发布时间】:2023-01-08 22:18:50
【问题描述】:

我有以下列表:

original_list = [('Anger', 'Envy'), ('Anger', 'Exasperation'), ('Joy', 'Zest'), ('Sadness', 'Suffering'), ('Joy', 'Optimism'), ('Surprise', 'Surprise'), ('Love', 'Affection')]

我正在尝试使用 random 方法创建一个包含元组(上述列表)的第二个元素的 random 列表,这样的方式作为第一个元素出现的重复值只被考虑一次.

也就是说,我正在查看的最终列表将是:

random_list = [Exasperation, Suffering, Optimism, Surprise, Affection]

因此,在新列表 random_list 中,字符串 Envy 和 Zest 被删除(因为它们出现在原始列表中两次).并且该过程必须随机化结果,即每次迭代都会产生不同的列表五元素。

我可以请别人告诉我我该怎么做吗?

【问题讨论】:

  • “每次迭代”是什么意思:消除重复项的迭代或最终获得random_list下的迭代?
  • 也许你想要list(dict(random.sample(original_list, len(original_list))).values())?
  • @RomanPerekhrest 对不起 - 我想我还不够清楚。我想通过(随机)删除重复项来随机化 original_list,然后最后追加 random_list。比如说,列表中有n 元组。我只想要 p 样本 (p < n)。
  • @AndrejKesely 我收到错误消息:TypeError: Population must be a sequence or set. For dicts, use list(d).
  • @LovePutin 那么original_list 是字典,而不是列表?

标签: python-3.x list random


【解决方案1】:
d={}  # an empty dictionary
original_list = [('Anger', 'Envy'), ('Anger', 'Exasperation'), ('Joy', 'Zest'), ('Sadness', 'Suffering'), ('Joy', 'Optimism'), ('Surprise', 'Surprise'), ('Love', 'Affection')]
for y in original_list:
    d[y[0]]=y[1]

print(d)
#{'Anger': 'Exasperation', 'Joy': 'Optimism', 'Sadness': 'Suffering', 'Surprise': 'Surprise', 'Love': 'Affection'}

random_list=[x for x in d.values()]

output
#['Exasperation', 'Optimism', 'Suffering', 'Surprise', 'Affection']

【讨论】:

    【解决方案2】:

    您可以使用字典从original_list 中过滤重复项(之前用random.sample 打乱):

    import random
    
    original_list = [
        ("Anger", "Envy"),
        ("Anger", "Exasperation"),
        ("Joy", "Zest"),
        ("Sadness", "Suffering"),
        ("Joy", "Optimism"),
        ("Surprise", "Surprise"),
        ("Love", "Affection"),
    ]
    
    out = list(dict(random.sample(original_list, len(original_list))).values())
    print(out)
    

    打印(例如):

    ['Optimism', 'Envy', 'Surprise', 'Suffering', 'Affection']
    

    【讨论】:

      猜你喜欢
      • 2020-06-14
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多