在两个列表之间找到不常见的单词?

时间:2017-02-03 02:48:25

标签: python list

我有两个这样的列表:

odd_word = ['hey']

我想要一个新列表,其中包含第二个列表中未包含的单词。在这种情况下:

>>> odd = list(set(first) - set(second))
>>> odd
[]

这样做最快的方法是什么?谢谢。

我尝试使用此处显示的方法:Get difference between two lists,但它给了我一个空白列表。

void Update()
{
    if (isLocalPlayer)
    {
        if (Input.GetButton("Fire1"))
        {
            CmdFire(BulletSpawn);
        }
    }
}

[Command]
void CmdFire(GameObject Player)
{
    Ray shooterRay = new Ray(Player.transform.position, Player.transform.forward);
    if (Physics.Raycast(shooterRay, out Hit, 10000))
    {
        Debug.Log("player hit");
        GameObject Bullet_Hole = (GameObject)Instantiate(BulletHole_Prefab, Hit.point, Quaternion.FromToRotation(Vector3.up, Hit.point));
        NetworkServer.Spawn(Bullet_Hole);
    }
}

2 个答案:

答案 0 :(得分:3)

您可以使用collections.Counter

>>> from collections import Counter
>>> first = ['hello', 'hey', 'hi', 'hey']
>>> second = ['hey', 'hi', 'hello']
>>> odd_word = list((Counter(first) - Counter(second)).elements())
>>> print(odd_word)
['hey']

答案 1 :(得分:1)

这样做。

odd_word = [s for s in first if s not in second]

如果first中有重复的字词不在second中,则会给您重复。如果您不想要重复项,请改为执行此操作。

odd_word = list({s for s in first if s not in second})