亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

舉例講解Python中字典的合并值相加與異或?qū)Ρ?/h1>
 更新時(shí)間:2016年06月04日 11:31:30   作者:mattkang  
這里我們來舉例講解Python中字典的合并值相加與異或?qū)Ρ?以不同的字典為對(duì)象來進(jìn)行操作,,需要的朋友可以參考下

字典合并值相加
在統(tǒng)計(jì)匯總游戲數(shù)據(jù)的時(shí)候,有些數(shù)據(jù)是是每天用字典存的,當(dāng)我要對(duì)多天匯總的時(shí)候,就需要合并字典了。
如果key相同的話它們的值就相加。
不能用update方法,因?yàn)橛胾pdate方法則相同的key的值會(huì)覆蓋,而不是相加。
千言不如一碼。

def union_dict(*objs): 
  _keys = set(sum([obj.keys() for obj in objs],[])) 
  _total = {} 
  for _key in _keys: 
    _total[_key] = sum([obj.get(_key,0) for obj in objs]) 
  return _total 
 
obj1 = {'a':1,'b':2,'c':3} 
obj2 = {'a':1,'b':3,'d':4} 
print union_dict(obj1,obj2) 

 
輸出

{'a': 2, 'c': 3, 'b': 5, 'd': 4}

sum([obj.keys() for obj in objs],[])這句可能不太好理解。
其實(shí)sum()函數(shù)也有"鮮為人知的參數(shù)",即第2個(gè)參數(shù),start參數(shù),默認(rèn)是0。
而且不止可以是int類型,還可以是其他支持+操作符的東西,比如[]。
利用這一點(diǎn),可以對(duì)二層數(shù)組打平成一層。
比如

>>sum([[1,2,3],[4,5]],[])
[1,2,3,4,5]

對(duì)字典diff("異或")
在游戲中,我要監(jiān)控記錄物品系統(tǒng)中的背包變動(dòng)情況。("異或"的結(jié)果是相同的消除,剩下不同的,即變動(dòng)的)
假設(shè)背包的存儲(chǔ)結(jié)構(gòu)是這樣的。
是一個(gè)字典,{物品id:數(shù)量}。
在背包類初始化的時(shí)候,把背包物品信息copy保存到一個(gè)oldbag變量,進(jìn)行一些物品操作后(比如使用物品,領(lǐng)取物品獎(jiǎng)勵(lì)等),在調(diào)用save()方法存進(jìn)redis時(shí),對(duì)新的bag字典與oldbag字典進(jìn)行差異對(duì)比就得出變動(dòng)情況了。
千言不如一碼。

def symmetric_difference(_oldobj,_newobj): 
  _oldkeys = _oldobj.keys() 
  _newkeys = _newobj.keys() 
  _diff = {} 
  for _key in set(_oldkeys + _newkeys): 
    _val = _newobj.get(_key,0) - _oldobj.get(_key,0) 
    if _val: 
      _diff[_key] = _val  
  return _diff  
 
oldobj = {'a':1,'b':2,'c':3} 
newobj = {'a':1,'b':3,'d':4} 
print symmetric_difference(oldobj,newobj) 

輸出

{'b': 1, 'd': 4,'c': -3}

代表玩家得到了1個(gè)'b'物品,4個(gè)'d'物品,失去了3個(gè)'c'物品。

相關(guān)文章

  • Python 實(shí)現(xiàn)順序高斯消元法示例

    Python 實(shí)現(xiàn)順序高斯消元法示例

    今天小編就為大家分享一篇Python 實(shí)現(xiàn)順序高斯消元法示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Pandas數(shù)值排序 sort_values()的使用

    Pandas數(shù)值排序 sort_values()的使用

    本文主要介紹了Pandas數(shù)值排序 sort_values()的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Python 中使用 Selenium 單擊網(wǎng)頁(yè)按鈕功能

    Python 中使用 Selenium 單擊網(wǎng)頁(yè)按鈕功能

    Selenium是一個(gè)用于測(cè)試網(wǎng)站的自動(dòng)化測(cè)試工具,支持各種瀏覽器包括Chrome、Firefox、Safari等主流界面瀏覽器,同時(shí)也支持phantomJS無界面瀏覽器,本篇文章將介紹如何在 Python 中使用 selenium 單擊網(wǎng)頁(yè)上的按鈕,感興趣的朋友一起看看吧
    2023-11-11
  • 如何使用VSCode愉快的寫Python于調(diào)試配置步驟

    如何使用VSCode愉快的寫Python于調(diào)試配置步驟

    從我的使用經(jīng)驗(yàn)出發(fā),可以說VSCode用來寫Python真的是再合適不過了,你將體驗(yàn)到絲滑的編程體驗(yàn)和無限擴(kuò)展的可能。而且,如果你的項(xiàng)目是包含多種語言的,比如Web開發(fā),你不必再開多個(gè)編輯器和其他工具,因?yàn)檫@一切都可以在VSCode里完成了
    2018-04-04
  • 基于python3實(shí)現(xiàn)socket文件傳輸和校驗(yàn)

    基于python3實(shí)現(xiàn)socket文件傳輸和校驗(yàn)

    這篇文章主要為大家詳細(xì)介紹了基于python3實(shí)現(xiàn)socket文件傳輸和校驗(yàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • python逆向微信指數(shù)爬取實(shí)現(xiàn)步驟

    python逆向微信指數(shù)爬取實(shí)現(xiàn)步驟

    這篇文章主要為大家介紹了python逆向微信指數(shù)爬取的實(shí)現(xiàn)步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-02-02
  • Python創(chuàng)建多線程的兩種常用方法總結(jié)

    Python創(chuàng)建多線程的兩種常用方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了Python中創(chuàng)建多線程的兩種常用方法,文中的示例代碼簡(jiǎn)潔易懂,對(duì)我們掌握Python有一定的幫助,需要的可以收藏一下
    2023-05-05
  • Python調(diào)用ChatGPT制作基于Tkinter的桌面時(shí)鐘

    Python調(diào)用ChatGPT制作基于Tkinter的桌面時(shí)鐘

    這篇文章主要為大家詳細(xì)介紹了Python如何調(diào)用ChatGPT制作基于Tkinter的桌面時(shí)鐘,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-03-03
  • PyCharm無代碼提示解決方案

    PyCharm無代碼提示解決方案

    最近發(fā)現(xiàn)在使用pycharm編寫python代碼的時(shí)候發(fā)現(xiàn)沒有了代碼提示的功能,下面這篇文章主要給大家介紹了關(guān)于PyCharm無代碼提示解決方案的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Django配置Bootstrap, js實(shí)現(xiàn)過程詳解

    Django配置Bootstrap, js實(shí)現(xiàn)過程詳解

    這篇文章主要介紹了Django配置Bootstrap, js實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10

最新評(píng)論