簡體   English   中英

如何獲取包含字典的列表的值以與另一本字典進行比較?

[英]How do I get values of a list containing dictionary to compare with another dictionary?

這是我的字典列表

scores = [{'names':'soccer', 'power':'5'},{'names':'football', 'power':6}]

正如您所看到的,我的 I 可能在冪值中有字符串。

我的字典我想與分數值(足球)的名稱是否相等進行比較。

my_stats = {'soccer':3, 'football':2}

所以例如

for values in scores:
    if my_stats(index) == "soccer" and scores(names) == "soccer":
        if my_stats(value) < power(value):
            return power(value) is higher

我知道這段代碼不起作用,但這是我第一次嘗試從列表中獲取字典值。 我猜我需要 2 個 for 循環? 1 代表列表,1 代表字典?

我在scores列表中添加了更多條目以使代碼更通用。

下面的代碼將掃描完整的scores列表,並在my_stats找到唯一游戲的my_stats

scores = [{'names':'soccer', 'power':'5'},
          {'names':'soccer', 'power':8},
          {'names':'football', 'power':6},
          {'names':'football', 'power':9}]
my_stats = {'soccer':3, 'football':2}

for score in scores:
    for game,power in my_stats.items():
        if score['names'] == game and int(score['power']) > power:
            my_stats[game] = int(score['power'])

print (my_stats)

輸出將是:

{'soccer': 8, 'football': 9}

原始scores列表的輸出是:

{'soccer': 5, 'football': 6}

擴展代碼

您可能還想查看此選項。 如果scores中的游戲在my_stats中不存在,那么下面的代碼也會將游戲添加到my_stats

scores = [{'names':'soccer', 'power':'5'},
          {'names':'soccer', 'power':8},
          {'names':'football', 'power':6},
          {'names':'football', 'power':9},
          {'names':'basketball', 'power':20}]
my_stats = {'soccer':3, 'football':2}

for score in scores:
    if score['names'] in my_stats:
        if int(score['power']) > my_stats[score['names']]:
            my_stats[score['names']] = int(score['power'])
    else:
        my_stats[score['names']] = int(score['power'])

    #for game,power in my_stats.items():
    #    if score['names'] == game and int(score['power']) > power:
    #        my_stats[game] = int(score['power'])

print (my_stats)

上面的代碼會給你一個輸出如下:

{'soccer': 8, 'football': 9, 'basketball': 20}
for score in scores:
   if score['names'] == 'soccer':
      if score['power'] == my_stats['soccer']
        print('the name is soccer and the scores are even')

如果這就是你想要做的,請告訴我! :)

注意:一般來說,如果你想比較字典,我建議保持字典鍵相同。 我不確定您的目標是什么,但例如,我會將scores結構更改為:

scores = {'power':
             {'football': 5, 'soccer': 6}
         }

這樣你可以這樣做:

if scores['powers']['football'] == my_stats['football']:
    print('scores are the same')

首先,您可以將scores標准化為與my_stats類似的數據結構。 這可以像這樣完成:


>> _scores = dict(zip([item["names"] for item in a], [int(item["power"]) for item in a])
>> _scores
{'football': 6, 'soccer': 5}

然后像往常一樣從字典中獲取:

>> _scores.get("soccer")
5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM